(TIL) 2022-04-16
데이터베이스에 저장할 때 save 와 update 두가지가 방법이 있는데 이 둘의 차이는 return 값을 전달받는지에 대한 차이인 것 같다
save
const studentsInfo = await this.studentsInfoRepository.save({
id: id,
name: name,
grade: grade,
phone: phone,
});
save는 결과에 대한 return 값을 변수로(위 코드에서는 studentsInfo) 받아올 수 있다. 그래서 그 변수를 다시 return 하면 프론트엔드로 보내줄 수 있다.
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 는 원하는 데이터를 가져올 때마다 각각의 엔드포인트로 한번씩 요청을 했어야 했다.
axios.get("https://웹페이지주소/:students")
axios.get("https://웹페이지주소/:examScore")
axios.get("https://웹페이지주소/:examSchedule")
하지만 GraphQL 으로 요청할 때는 단 한번의 요청만으로도 여러개의 Api를 동작하게 할 수 있다.
axios.post("https://웹페이지주소/graphql",
{ query: `query {
fetchStudents
{
id
name
age
}
fetchExamScore
{
name
score
}
fetchExamSchedule{
{
date
exam
}
}`
})
-
(위에 코드참고) RESTApi는 요청하는 주소의 엔드포인트가 항상 다르지만, GraphQL은 /graphql 하나만으로 통일된다
-
(위에 코드참고) RESTApi는 요청하는 방식이 (GET, POST, UPDATE, DELETE..) 다양하지만, GraphQL은 POST 하나로 통일된다
-
GraphQL은 요청이 실패하더라도 항상 성공(200)상태로 표시된다. (내부 각각의 요청들은 따로 성공인지 실패인지 구별할 수 있다)
- GraphQL은 RESTApi 의
UnderFetching 문제점(1번 예시처럼 한번의 요청만으로는 필요한 데이터를 모두 처리할 수 없는 것),
OverFetching 문제점(RestApi는 요청으로 받는 데이터중에 원하는 것만 골라서 받을 수 없고 데이터 전체를 받아올 수 밖에 없다. 그래서 리소스낭비가 생기지만, GraphQL은 필요한 데이터만 골라서 받아올 수 있다)
을 해결했다
Author And Source
이 문제에 관하여((TIL) 2022-04-16), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sunghwancode/TIL-2022-04-16저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)