GraphQL ID를 고객의 문자열로 처리해야 합니까?
다음을 사용하여 응용프로그램을 만들고 있습니다.
- 백엔드 데이터베이스로서의 MySQL
- Apollo GraphQL 서버를 해당 데이터베이스에 대한 쿼리 계층으로 표시
- GraphQL과 MySQL 사이의 ORM 계층으로 후속화
GraphQL 스키마를 구축하면서 GraphQL ID 데이터 유형을 사용하여 레코드를 고유하게 식별하고 있습니다.여기 예시 스키마와 MySQL 레졸버/커넥터가 있습니다.
그래프ql 유형:
type Person {
id: ID!
firstName: String
middleName: String
lastName: String
createdAt: String
updatedAt: String
}
후속 커넥터 크기 조정
export const Person = sequelize.define('person', {
firstName: { type: Sequelize.STRING },
middleName: { type: Sequelize.STRING },
lastName: { type: Sequelize.STRING },
});
그래프QL 레졸버:
Query: {
person(_, args) {
return Person.findById(args.id);
}
그렇게 하면 됩니다.제 질문은 이렇습니다.그래프QL은 다음을 치료하는 것 같습니다.ID
활자로 치다ID 값이 MySQL 데이터베이스에 저장되는 동안INT
Squelize에 의해서.GraphQL을 사용하여 데이터베이스의 ID 값과 일치하는 문자열 또는 정수로 MySQL db를 쿼리할 수 있습니다.그러나 GraphQL은 항상 ID 값을 문자열로 반환합니다.
고객사에서 이 값을 어떻게 처리해야 합니까?GraphQL에서 받는 즉시 항상 정수로 변환해야 합니까?ID 값을 문자열로 저장하도록 후속 코드를 수정해야 합니까?이와 같이 GraphQL ID를 사용할 때 올바른 진행 방법이 있습니까?
ID
는 GraphQL 규격(2016년 10월 작업 초안)에 기술된 스칼라 타입입니다.
ID 유형은 문자열과 동일한 방식으로 직렬화되지만 사용자 ‐로 읽을 수 있는 것은 아닙니다.숫자인 경우가 많지만 항상 문자열로 직렬화되어야 합니다.
너의 관찰
GraphQL을 사용하여 데이터베이스의 ID 값과 일치하는 문자열 또는 정수로 MySQL db를 쿼리할 수 있습니다.그러나 GraphQL은 항상 ID 값을 문자열로 반환합니다.
결과 강제성에 대한 규격과 일치합니다.
GraphQL은 ID 형식과 무관하며 ID가 나타낼 수 있는 여러 형식에 걸쳐 일관성을 보장하기 위해 문자열로 직렬화됩니다.
입력 강제성:
입력 유형으로 예상되는 경우, 임의의 문자열(예: "4") 또는 정수(예: 4) 입력 값은 지정된 GraphQL 서버가 예상하는 ID 형식에 적합하도록 ID로 강제 지정해야 합니다.
고객사에서 이 값을 어떻게 처리해야 합니까?
- 작업시
ID
결과를 문자열로 취급합니다. - 사용시
ID
입력(GraphQL 변수 또는 돌연변이 또는 쿼리에 대한 입력 파라미터)에서는 정수 또는 문자열을 사용할 수 있습니다.
GraphQL에서 받는 즉시 항상 정수로 변환해야 합니까?
그것은 당신의 용도에 따라 매우 다릅니다.여기에는 명확한 "예" 또는 "아니오"를 지정하는 일반적인 규칙이 없습니다.
ID 값을 문자열로 저장하도록 후속 코드를 수정해야 합니까?
아니요, 그럴 필요는 없습니다.
에 대한 ID
type은 ID를 저장하는 방법을 포함하지 않으며, GraphQL 서버가 처리하는 방법만 포함합니다.ID
투입산출 이그래프QL .이 동작을 보장하는 것은 그래프QL 계층에 달려 있습니다.실제 스토리지에서 ID가 어떻게 처리되는지는 스토리지 계층에 달려 있습니다.
이와 같이 GraphQL ID를 사용할 때 올바른 진행 방법이 있습니까?
위의 답변들도 이 질문에 답하길 바랍니다 :)
언급URL : https://stackoverflow.com/questions/47874344/should-i-handle-a-graphql-id-as-a-string-on-the-client
'programing' 카테고리의 다른 글
HTMLCollection, NodeLists, 객체 배열 간의 차이 (0) | 2023.10.05 |
---|---|
Jquery 배경색 변경 (0) | 2023.10.05 |
Angular에서 선택한 사용 예가 필요합니다.JS입력양식 (0) | 2023.10.05 |
MYSql의 새 줄 문자 바꾸기가 작동하지 않습니다. (0) | 2023.10.05 |
XSLT를 사용한 XML에서 CSV로 (0) | 2023.10.05 |