bugfix> graphql > 投稿

チーム(親)にプレーヤー名を追加し、プレーヤー名のリストを取得しようとして苦労してネストの突然変異を達成しようとしています...

GraphiQLツール(localhost:4000/graphiql)内で、これは私が含めたAdd Mutation変数です...

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

クエリ変数、teamIDと名前を追加...

{
  "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" } ] の代わりに 。 .then(...) を含める必要があります .save() の後結果を得るには?例はありますか?あなたの助けに感謝します。

ところで、私はmongoDB/mongooseメソッドを使用しています。それらをローカルmongoDBに保存します。

回答 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));
        }
    
    

    その助けを願っています。

あなたの答え