【问题标题】:Issues with GraphQL Nested MutationGraphQL 嵌套变异的问题
【发布时间】:2018-11-04 05:29:55
【问题描述】:

我正在尝试通过在团队(父级)中添加玩家姓名并努力获取玩家姓名列表来实现嵌套突变...

在 GraphiQL 工具 (localhost:4000/graphiql) 中,这是我包含的 Add Mutation 变量...

mutation AddPlayerToTeam($name: String!, $teamId: ID!){
  addPlayerToTeam(player: $name, teamId: $teamId){
    id
    players{
      name
    }
  }
}

查询变量,添加 teamID 和 name...

{
  "teamId": "5aff545371fc930a4c43b2b9",
  "name": "John Doe"
}

显示的结果...

{
  "data": {
    "addPlayerToTeam": {
      "id": "5b072774e385740c38483111",
      "players": []
    }
  }
}

但我期待玩家名称会像这样显示......

{
  "data": {
    "addPlayerToTeam": {
      "id": "5b072774e385740c38483111",
      "players": [
         { 
           "name": "John Doe"
         }
       ]
     }
  }
}

变异代码...

AddPlayerToTeam: {
    type: TeamType,
    args: {
            name: { type: new GraphQLNonNull(GraphQLString) },
            teamId: { type: new GraphQLNonNull(GraphQLID) }
        },
        resolve(parent, { name, teamId }) {
            let addPlayer = new Player({ name, teamId });
            return addPlayer.save();
        }
    },

我一直在努力寻找为什么我得到"players": [] 而不是"players": [ {"name": "John Doe" } ] 的原因。 我需要在.save() 之后包含.then(...) 以获得结果吗?有什么例子吗?感谢您的帮助。

顺便说一句,我使用 mongoDB/mongoose 方法。将它们保存在本地 mongoDB 中。

【问题讨论】:

    标签: graphql mutation


    【解决方案1】:

    找到解决方案...感谢 graphql.slack 的#andrewingram 提供帮助。只需包含.then(...) 即可返回结果。

    AddPlayerToTeam: {
        type: TeamType,
        args: {
            name: { type: new GraphQLNonNull(GraphQLString) },
            teamId: { type: new GraphQLNonNull(GraphQLID) }
        },
        async resolve(parent, { name, teamId }) {
            let addPlayer = new Player({ name, teamId });
            await addPlayer.save();
            return Team.findById(teamId);
        }
    },
    

    或在承诺版本中

    resolve(parent, { name, teamId }) {
            let addPlayer = new Player({ name, teamId });
            return addPlayer.save().then(() => Team.findById(teamId));
        }
    

    希望有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-07-15
      • 2020-01-14
      • 2019-08-24
      • 1970-01-01
      • 2020-04-24
      • 2018-08-24
      • 2021-04-09
      • 2017-07-28
      • 2019-04-10
      相关资源
      最近更新 更多