오류가 발생하는 이유: "Query" 유형의 필드 xx를 쿼리할 수 없습니까?
GraphiQL에서 성공적으로 테스트한 후 GraphiQL 툴에서 graphQL 쿼리를 복사하여 붙여 넣었는데 반응 내 Apollo 클라이언트에서 시도하면 오류가 반환되었습니다.JS 앱:
[GraphQL error]: Message: Cannot query field "allStudents" on type "Query"., Location: [object Object], Path: undefined
실장은 다음과 같습니다.
const link = createHttpLink({
uri: 'http://localhost:8000/graphql',
fetchOptions: { method: "POST" }
});
const client = new ApolloClient({
link: link
});
const GET_STUDENTS = gql`
query getStudents($schoolID: Int!){
allStudents(schoolId: $schoolID){
pickUpLat
pickUpLng
}
}
`;
client
.query({
query: GET_STUDENTS,
variables: { schoolID: 1 }
})
.then(result => console.log(result));
뭐가 잘못됐나요?다음은 제가 예상한 올바른 답변입니다.
{
"data": {
"allStudents": [
{
"pickUpLat": 31.9752942479727,
"pickUpLng": 35.8438429235775
},
{
"pickUpLat": 31.9754545979993,
"pickUpLng": 35.8437478537235
}
]
}
}
편집 GraphiQL을 사용하여 예상된 결과를 얻을 수 있습니다.
편집 2
요구와 GraphiQL 요구 간의 payload를 비교하려고 했습니다.
내 요청 페이로드: (그것은__typename
이유는 모르겠지만)
{"operationName":"getStudents","variables":{"schoolID":1},"query":"query getStudents($schoolID: Int) {\n allStudents(schoolId: $schoolID) {\n pickUpLat\n pickUpLng\n __typename\n }\n}\n"}
GraphiQL 요청 페이로드:
{"query":"query getStudents($schoolID: Int!){\n allStudents(schoolId: $schoolID){\n pickUpLat\n pickUpLng\n }\n}","variables":{"schoolID":1},"operationName":"getStudents"}
그럼, 거의 똑같아요, 짐작 가는 거 없어요?
내 쿼리의 결함은 새로운 스키마를 다운로드하지 않았다는 것이다.
다음을 사용하여 스키마를 다운로드할 수 있습니다.apollo schema:download --endpoint=http://localhost:8080/graphql schema.json
http://localhost:8080/graphql을 서버 엔드포인트로 대체
자세한 것은, https://www.apollographql.com/docs/ios/downloading-schema/ 를 참조해 주세요.
제 경우 파라미터가 필요 없는 쿼리를 정의하여 객체 배열을 반환했습니다.
myBasicQuery: [BasicAnswer]
type BasicAnswer {
name String
phone String
}
오류가 발생했습니다.Cannot query field \"BasicAnswer\" on type \"BasicAnswer\"
내가 이렇게 선언했을 때:
query myBasicQuery {
BasicAnswer {
name
phone
}
}
Basic Answer 필드만 남겨두면 문제가 해결되었습니다.
query myBasicQuery {
name
phone
}
이 문제를 검색할 수 있는 다른 사용자의 경우 다른 패키지가 아닌 패키지에서 가져오십시오.
@apollo/client를 위해 apollo/client를 팔로우하는 사람들은 이제 일몰되었습니다.
쿼리를 구성하는 방법은 다음과 같습니다.
갱신필@graphql-codegen/cli
패키지는 최신 버전(2.6.2)으로 정상적으로 동작하고 있습니다.
하수라를 사용하는 사람도 마찬가지입니다.
문제는
query: query_root
# query: Query # wrong value before upgrade
mutation: mutation_root
subscription: subscription_root
}```
엔티티를 보세요.@Field() 주석이 누락되어 있을 수 있습니다.예:
@PrimaryGeneratedColumn()
id: string;//Will not be mapped by GraphQL and you will get OP's error
@Column()
@Field()
name: string;//Will be mapped by GraphQL and you will not get OP's error
graphqls 파일을 fragment화하여 codegen.ts로 정의하는 것을 잊은 경우에도 이 문제가 발생합니다.
(프로젝트):/src/main/main:
- schema.graphqls
- search.graphqls
(code-project)/codegen.ts
const codegen: CodegenConfig = {
overwrite: true,
// add wildcards here, to read all files:
schema: "../projectname/src/main/resources/graphql/*.graphqls",
documents: './src/app/core/graphql/*.ts',
generates: {
....
}
}
GraphiQL 인터페이스에서 이 문제가 발견되면 페이지를 새로 고치면 새 스키마가 다운로드되고 오류가 사라집니다.
언급URL : https://stackoverflow.com/questions/50434490/why-i-got-error-cannot-query-field-xx-on-type-query
'sourcecode' 카테고리의 다른 글
반응 요소의 너비를 얻는 방법 (0) | 2023.03.25 |
---|---|
오라클의 SELECT 쿼리에서 변수 선언 및 값 설정 (0) | 2023.03.25 |
연락처 양식 7의 양식 액션 URL을 변경하는 방법 (0) | 2023.03.25 |
봄의 각 테스트 전에 데이터베이스를 재생성하려면 어떻게 해야 합니까? (0) | 2023.03.25 |
Rails에서 모든 컨트롤러 파라미터를 camelCase에서 snake_case로 변환하는 가장 좋은 방법은 무엇입니까? (0) | 2023.03.25 |