无法为不可为空的字段返回null

时间:2020-06-15 20:15:10

标签: javascript graphql

我正在尝试通过json网络令牌发送来使用GraphQL获取一些数据,但是我得到的结果是一个错误。

这是我的解析器的一部分,错误消息对此做了解决。

const resolvers = {
    Query: {
        me: async (token) => {
            try {
                const payload = verify(token, process.env.SECRET);
                if (payload.userId) {
                    const me = await User.findById(payload.userId);
                    return me;
                } else {
                    throw { message: 'Invalid token!' };
                }
            } catch (error) {
                return error.message;
            }
        },

...

错误显示为:

"errors": [
{
  "message": "Cannot return null for non-nullable field User.name.",
  "locations": [
    {
      "line": 3,
      "column": 5
    }
  ],
  "path": [
    "me",
    "name"
  ],
  "extensions": {
    "code": "INTERNAL_SERVER_ERROR",

...

用户的typeDef:

type User {
    id: ID!
    name: String!
    email: String!
    password: String!
}

extend type Query {
    me(token: String!): User
}

我的错误在哪里!?

谢谢!

1 个答案:

答案 0 :(得分:0)

const resolvers = {
    Query: {
        me: async (_, { token }) => {
            try {
                const payload = verify(token, process.env.SECRET);
                if (payload) {
                    const me = await User.findById(payload.userId);
                    return me;
                } else {
                    throw { message: 'Invalid token!' };
                }
            } catch (error) {
                return error.message;
            }
        }

...

这就是解决方案。我有(token) => { ... },但我功能中应该是(_, { token }) => { ... }