【问题标题】:[Error: Query.gameWeeks defined in resolvers, but not in schema][Error: Query.gameWeeks defined in resolvers, but not in schema]
【发布时间】:2021-02-08 13:28:13
【问题描述】:

一直在学习使用 Apollo + MongoDB 构建 GraphQL 后端的教程,但即使它或多或少与教程相同(出于我自己的目的进行了一些更改),我也会遇到错误。教程代码可以在这里找到:https://github.com/Zepsey/graphql-api-tutorial

教程的 YT:https://www.youtube.com/watch?v=VLVEkyQPguU&list=PLgghBnrtImuIdeDO9bosyEP-7DW0Uup2e&index=9&t=1s

为丢失这么多代码道歉,我已经看了几个小时了,我想我找到了一个可能的解决方案:GraphQL : the object name is defined in resolvers, but not in schema,因为它与我遇到的错误类似。

但我的文件和代码的结构不同,所以我看不出该解决方案在我的情况下会如何发挥作用。

node_modules/graphql-tools/dist/generate/addResolveFunctionsToSchema.js:79
                throw new _1.SchemaError(typeName + "." + fieldName + " defined in resolvers, but not in schema");
                ^

[Error: Query.gameWeeks defined in resolvers, but not in schema]
[nodemon] app crashed - waiting for file changes before starting...

我的架构 (/models/gameWeek.js):

const { Schema } = mongoose;

const GameWeekSchema = new Schema({
    player_id: {
        type: Number
    },
    player_name: {
        type: String,
        trim: true
    },
    points: {
        type: Number
    },
    rank: {
        type: Number
    },
    previous_rank: {
        type: Number
    },
    total: {
        type: Number
    },
    team_name: {
        type: String,
        trim: true
    },
    team_id: {
        type: Number
    }
})

const GameWeek = mongoose.model("GameWeek", GameWeekSchema)

module.exports = { GameWeek }

我的查询(解析器/查询):

 module.exports = async (_, {}, {models}) => {
    // returns all gameweeks in DB
    return await models.GameWeek.find();
}

我在查询中的索引文件(/resolvers/queries/index.js):

const gameWeeks = require('./gameWeek');

module.exports = {
    gameWeeks
}

我在 (/types/gameWeek.js) 中的类型:

const { gql } = require('apollo-server');

const GameWeek = gql`
    type GameWeek{
        player_id: ID!
        player_name: String!
        points: Float
        rank: Int!
        previous_rank: Int!
        total: Float
        team_name: String!
        team_id: Int
    }
    type Query {
        GameWeeks: [GameWeek]!
    }
    input CreateGameWeek{
        player_id: ID!
        player_name: String!
        points: Float
        rank: Int!
        previous_rank: Int!
        total: Float
        team_name: String!
        team_id: Int
    }
    input UpdateGameWeek{
        player_id: ID!
        player_name: String
        points: Float
        rank: Int
        previous_rank: Int
        total: Float
        team_name: String
        team_id: Int
    }
    type DeleteGameWeek {
        player_id: ID!
    }
    type GameWeekUpdateResponse{
        success: Boolean!
        message: String
        gameweeks: [GameWeek]
    }
    
    type Mutation{
        createGameWeek(input: CreateGameWeek!): GameWeek!
        updateGameWeek(player_id: ID,input: UpdateGameWeek!): GameWeekUpdateResponse!
        deleteGameWeek(player_id: ID!): DeleteGameWeek!
    }
`;

module.exports = GameWeek;

【问题讨论】:

    标签: mongodb graphql apollo


    【解决方案1】:

    已解决:

    对任何程序员来说都是最愚蠢和最古老的错误,我有一个错字。

    在 /types/gameWeek.js 中

    上一个:

    type Query {
            GameWeeks: [GameWeek]!
        }
    

    固定:

    type Query {
            GameWeek: [GameWeek]!
        }
    

    删除了 s。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 2021-08-24
      • 2021-12-29
      • 2018-12-08
      • 2021-12-12
      • 1970-01-01
      相关资源
      最近更新 更多