【问题标题】:Cannot set property 'clientMutationId' of undefined" Error无法设置未定义的属性“clientMutationId””错误
【发布时间】:2017-04-26 22:34:48
【问题描述】:
outputFields: {
    token: {
        type: GraphQLString,
        resolve: (token) => token
    }
},

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

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 如果它会被调用,那么它应该在 graphiql 中打印令牌
  • 当您在输出字段的resolve: (token) => token 中放置console.log(token); 调试语句时,您会看到什么?您是否看到具有token 属性的对象?因为您在 mutateAndGetPayload 函数中返回了一个对象。

标签: graphql relayjs graphql-js


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    解决方案

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

    【讨论】:

      猜你喜欢
      • 2016-02-23
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2019-05-24
      相关资源
      最近更新 更多