(TIL) 2022-04-16
5683 ワード
データベースに保存するにはsaveとupdateの2つの方法があります.この2つの方法の違いは、戻り値を渡すかどうかです.
RESTAPIは、必要なデータを取得するたびに、各エンドポイントで1回要求されるべきである.
(上のコードを参照)RESTApi要求アドレスの端点は常に異なるが、GraphQLは/graphqlにのみ統一される
(上のコードを参照)RESTApiの要求方式は:多種多様で、GraphQLは1つのPOSTに統一されています
要求が失敗しても、GraphQLは常に成功(200)状態として表示されます.(内部各リクエストは成功か失敗かを区別できます)
GraphQLは
UnderFetchingの問題(1例目に示すように、1回のリクエストでは必要なすべてのデータを処理できません).
過剰照合の問題(RestAPIは要求されたデータから必要なデータを選択できず、データ全体を受信するしかない.これはリソースを浪費するが、GraphQLは必要なデータから必要なデータを選択するしかない)
を解決しました
save
const studentsInfo = await this.studentsInfoRepository.save({
id: id,
name: name,
grade: grade,
phone: phone,
});
saveは、結果の戻り値を変数(上のコードではstudentsInfo)として受信することができる.したがって、この変数を返すと、フロントエンドに送信できます.update
await this.studentsInfoRepository.update({
id: id,
name: name,
grade: grade,
phone: phone,
});
updateは結果の値がupdateでしか成功しないことを示します(?)create + save
const studentsInfo = await this.studentsInfoRepository.create({
id: id,
name: name,
grade: grade,
phone: phone,
});
//create 만으로는 실제 DB에 기록되지 않는다
await this.studentsInfoRepository.save(studentsInfo)
この方法も可能だGraphQLをRESTAPIで使用した場合の特性
axios.get("https://웹페이지주소/:students")
axios.get("https://웹페이지주소/:examScore")
axios.get("https://웹페이지주소/:examSchedule")
ただし、GraphQLリクエストを使用する場合、1回のリクエストで複数のAPIを実行できます.axios.post("https://웹페이지주소/graphql",
{ query: `query {
fetchStudents
{
id
name
age
}
fetchExamScore
{
name
score
}
fetchExamSchedule{
{
date
exam
}
}`
})
(上のコードを参照)RESTApi要求アドレスの端点は常に異なるが、GraphQLは/graphqlにのみ統一される
(上のコードを参照)RESTApiの要求方式は:多種多様で、GraphQLは1つのPOSTに統一されています
要求が失敗しても、GraphQLは常に成功(200)状態として表示されます.(内部各リクエストは成功か失敗かを区別できます)
UnderFetchingの問題(1例目に示すように、1回のリクエストでは必要なすべてのデータを処理できません).
過剰照合の問題(RestAPIは要求されたデータから必要なデータを選択できず、データ全体を受信するしかない.これはリソースを浪費するが、GraphQLは必要なデータから必要なデータを選択するしかない)
Reference
この問題について((TIL) 2022-04-16), 我々は、より多くの情報をここで見つけました https://velog.io/@sunghwancode/TIL-2022-04-16テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol