Graphql 无法设置属性';clientMutationId';“未定义”的定义;错误

Graphql 无法设置属性';clientMutationId';“未定义”的定义;错误,graphql,relayjs,graphql-js,Graphql,Relayjs,Graphql Js,outputfields永远不会被调用,不确定我是否以正确的方式执行操作,从mutateAndGetPayload方法返回数据时不会调用resolve函数 outputFields: { token: { type: GraphQLString, resolve: (token) => token } }, 我认为您需要从mutateAndGetPayload方法返回一些内容。这可能是一个承诺。尝试返回userprof.findOne。解决

outputfields永远不会被调用,不确定我是否以正确的方式执行操作,从mutateAndGetPayload方法返回数据时不会调用resolve函数

outputFields: {
    token: {
        type: GraphQLString,
        resolve: (token) => token
    }
},

我认为您需要从mutateAndGetPayload方法返回一些内容。这可能是一个承诺。尝试返回userprof.findOne。

解决方案

mutateAndGetPayload: (credentials) => {
    console.log('credentials', credentials);
    userprof.findOne({email: credentials.email}).exec(function(err, r) {
        if(!r) {
            return new Error('no user')
        } else if(r) {
            if(r.password != credentials.password) {
                return new Error('password error');
            } else {
                var token = jwt.getToken(r);
                console.log(token);
                return {token};
            }
        }
    });
}

可能重复:“outputfields永远不会被调用”--你怎么知道的?@AhmadFerdous如果它会被调用,那么它应该以图形ql打印令牌当你放置
console.log(令牌)时会看到什么resolve:(token)=>token
中的code>debug语句?您是否看到具有
标记
属性的对象?因为您正在
mutateAndGetPayload
函数中返回一个对象。
    token: {
        type: GraphQLString,
        resolve: ({token}) => token
    }
},
mutateAndGetPayload: (credentials) => {
    return UserProf.findOne({ email: credentials.email }).then((r) => {
        if (!r) {
            return new Error('no user');
        } else if (r) {
            if (r.password != credentials.password) {
                return new Error('password error');
            } else {
                return { token: jwt.getToken(r) };
            }
        }
    });
}