【问题标题】:Why am I getting "Cannot return null for non-nullable field User.sentEmail."?为什么我会收到“无法为不可为空的字段 User.sentEmail 返回 null。”?
【发布时间】:2022-01-30 20:10:21
【问题描述】:

我知道如果我尝试调用的字段为空,我会收到此错误,但是当我创建电子邮件时,该电子邮件的 ID 确实会保存在用户中。但是当我尝试使用以下查询查询该用户时

query all {
  users{
    sentEmail{
      sender
      emailbody
      recipient
    }
  }
}
}

我收到错误“无法为不可为空的字段 User.sentEmail 返回空值。”如果sentEmail中有id,为什么会出现这个错误

解析器

const { Email, User } = require('../models')

const resolvers = {
    Query : {
        users : async () => {
            return await User.find({}).populate('emails');
        },
        emails : async (parent, { email }) => {
            const params = email ? { email } : {};
            return await Email.find(params).sort({ sentDate: -1 });
        },
    },
    Mutation : {
        addemail : async (parent, {sender, recipient, subject, emailbody}) => {
            const newemail = await Email.create({ sender, recipient, subject, emailbody});

            await User.findOneAndUpdate(
                { email: newemail.sender },
                { $addToSet : { sentEmails: newemail._id }}
            )

            await User.findOneAndUpdate(
                { email: newemail.recipient },
                { $addToSet : { receivedEmails: newemail._id }}
            )

            return newemail
        },
        addUser: async (parent, { firstName , lastName , email, password }) => {
            const user = await User.create({ firstName , lastName , email, password }, {new: true})
        },
    }
};

module.exports = resolvers

typeDefs

const { gql } = require('apollo-server-express');

const typeDefs = gql`
    type User {
        _id : ID
        firstName : String
        lastName : String
        email : String
        password : String
        sentEmail: [Email]!
    }
    
    type Email {
        _id : ID
        sender : String
        recipient : String
        emailbody : String
        sentDate : String
    }

    type Query {
        users : [User]
        emails(email: String) : [Email]
    }

    type Mutation {
        addemail(sender: String!, recipient: String!, subject: String , emailbody: String!): Email
        addUser(firstName: String!, lastName: String!, email: String!, password: String! ): User
    }
`;

module.exports = typeDefs;

【问题讨论】:

    标签: mongodb mongoose graphql graphql-playground


    【解决方案1】:

    请检查您从解析器获得的回复。似乎它将 sentEmail 字段的值返回为 null 或您的响应 json 中不存在 sentEmail 字段。

    【讨论】:

      猜你喜欢
      • 2021-02-16
      • 2021-11-27
      • 2021-10-24
      • 2020-10-27
      • 2021-10-29
      • 2021-03-18
      • 2012-05-11
      • 2018-10-05
      • 2021-08-06
      相关资源
      最近更新 更多