2015-11-20 1 views
5

次のエラーが発生しています。 graphiqlで突然変異を実行しようとしているとき。私がこの問題を解決するのを助けてください、または私が反応リレー変異例を見つけることができるリンクを指してください。あなたのケースでは、約束 - ここ未定義のプロパティ 'clientMutationId'を設定できません

mutation { 
    createUser(input: {username: "Hamza Khan", clientMutationId: ""}) { 
    user { 
     id 
     username 
    } 
    } 
} 

{ 
    "data": { 
    "createUser": null 
    }, 
    "errors": [ 
    { 
     "message": "Cannot set property 'clientMutationId' of undefined", 
     "locations": [ 
     { 
      "line": 17, 
      "column": 2 
     } 
     ] 
    } 
    ] 
} 

は、変異定義リターンmutateAndGetPayloadから何かにあなたが持っている

import { 
    GraphQLString, 
    GraphQLInt, 
    GraphQLFloat, 
    GraphQLList, 
    GraphQLObjectType, 
    GraphQLID, 
    GraphQLNonNull 
} from 'graphql'; 

import { 
    connectionArgs, 
    connectionDefinitions, 
    connectionFromArray, 
    fromGlobalId, 
    globalIdField, 
    mutationWithClientMutationId, 
    nodeDefinitions, 
} from 'graphql-relay'; 

import {User} from './usermodel'; 
import {UserType} from './usertype'; 

export const UserMutations = {}; 
UserMutations.createUser = mutationWithClientMutationId({ 
    name: 'CreateUser', 
    inputFields: { 
    username: {type: new GraphQLNonNull(GraphQLString)} 
    }, 
    outputFields: { 
    user: { 
     type: UserType, 
     resolve: (payload) => { 
     return User.getUserById(payload.userId); 
     } 
    } 
    }, 
    mutateAndGetPayload: (args) => { 
    let newUser = new User({ username: args.username }); 
    newUser.save().then((user) => { 
     return {userId: user.id}; 
    }).error((err) => {return null;}); 
    } 
}); 
+0

ユーザーが正しく読み込まれていないため、間違いはほとんどありません。おそらくあなたは入力としてユーザー名を送信しているだけだろうから。 –

+0

mutateAndGetPayloadで新しいユーザーをログオンできますが、間違ってoutputFieldsの関数が実行されていません。 – user1762608

+0

あなたがユーザーを問い合わせていない可能性があります。フィールドを要求しない場合、出力フィールドの解決機能は呼び出されません。 –

答えて

11

です。

mutateAndGetPayload: ({username}) => { 
    const newUser = new User({username}); 
    return newUser.save().then(user => ({userId: user.id})); 
} 
+0

また、エラーがある場合には、ヌルのペイロードを返すかどうかはわかりません。あなたはおそらく、クライアントサイドの突然変異が突然変異が失敗したことを知ることができるように、エラーがあなたのウェブスタックを通って中継することができます。 – steveluscher

+0

私の場合、返されるものの中に2番目の約束があります。そして第二の約束は拒否されます。これにより、 "undefinedのclientMutationId 'プロパティを設定できません"エラーが再び発生します。それを処理する最善の方法は何か分かりません。 – runios

+1

私の悪いです。私のコードでばかげたミス。帰りは約束の私の「それ」の中にあった。私はメインフローから戻っていない。 – runios

関連する問題