(TIL) 2022-04-16

5683 ワード

データベースに保存するにはsaveとupdateの2つの方法があります.この2つの方法の違いは、戻り値を渡すかどうかです.

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で使用した場合の特性

  • RESTAPIは、必要なデータを取得するたびに、各エンドポイントで1回要求されるべきである.
  • 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)状態として表示されます.(内部各リクエストは成功か失敗かを区別できます)
  • GraphQLは
    UnderFetchingの問題(1例目に示すように、1回のリクエストでは必要なすべてのデータを処理できません).
    過剰照合の問題(RestAPIは要求されたデータから必要なデータを選択できず、データ全体を受信するしかない.これはリソースを浪費するが、GraphQLは必要なデータから必要なデータを選択するしかない)
  • を解決しました