功能正常,但控制台出现无关的错误:未提供所需类型“ ID!”的变量“ $ id”。

时间:2019-02-02 07:15:26

标签: graphql react-apollo next.js prisma-graphql

我的CRUD操作正常工作。但是,许多人还产生一个单一的,特定的控制台错误我一直无法追查。

[GraphQL error]: Message: Variable "$id" of required type "ID!" was not provided., Location: [object Object], Path: undefined

示例:我可以查看用户列表而不会产生错误,并且可以访问单个用户的“详细信息”视图而不会产生错误。那两个孤立地工作正常。但是以某种方式,从前者遍历到后者会产生错误。

我在GraphQL-Playground中测试了两个查询(用户和用户),但没有收到错误。我还尝试将ID作为“ String”类型而不是“ ID!”类型。 (也没有!)。我尝试用料的用户ID解析器的其他“哈克”的方式。并且我尝试传递其他字段来代替查询解析器中的“ info”参数。

要重申,单独查看任一页面(即清除控制台并重新加载任一页面)不会触发该错误。这似乎是一些有关的旅程从/usersuser?id=12345

来自datamodel.prisma:

type User {
id: ID! @unique
createdAt: DateTime!
updatedAt: DateTime!
name: String!
email: String! @unique
password: String!
resetToken: String
resetTokenExpiry: Float
permissions: Permission
posts: [Post]! @relation(name: "PostsOfUser" onDelete: CASCADE)
comments: [Comment!]! @relation(name: "CommentsOfUser" onDelete: 
CASCADE)

来自schema.graphql中的查询对象:     user(id: ID!): User

用户查询解析器:

async user(parent, { id }, { db, request }, info) {
    const user = await db.query.user({ where: { id } }, info);
    return user;

使用react-apollo和graphql-tag软件包的gql查询:

const SINGLE_USER_QUERY = gql`
query SINGLE_USER_QUERY($id: ID!){
    user(id: $id) {
        id
        name
        email
        permissions
        createdAt
        updatedAt

    }
}
`;

预期的行为:用户可以从用户列表中单击一个用户,并且下一页将包含有关该用户的详细信息。

实际结果:可行,但还会生成控制台错误:

[GraphQL error]: Message: Variable "$id" of required type "ID!" was 
not provided., Location: [object Object], Path: undefined
index.js:86 

[Network error]: ServerError: Response not successful: Received status code 400
index.js:2178 GraphQL error occurred [getDataFromTree] Error: 
Network error: Response not successful: Received status code 400
at new ApolloError (ApolloError.js:37)
at QueryManager.js:328
at QueryManager.js:700
at Array.forEach (<anonymous>)
at QueryManager.js:699
at Map.forEach (<anonymous>)
at QueryManager.push../node_modules/apollo-client/core/QueryManager.js.QueryManager.broadcastQueries (QueryManager.js:694)
at QueryManager.js:277

0 个答案:

没有答案