запрос к графу возврат объекта с нулевым идентификатором - PullRequest
0 голосов
/ 19 января 2019

Graphql вернуть Oject с нулевым идентификатором.с mongodb.

Это выглядит странно для меня.

Если я удаляю new GraphQLNonNull() по идентификатору MailType, он работает с id: null, другие поля работают нормально.

const MailType = new GraphQLObjectType({
    name: 'Mail',
    fields: () => ({
        id: { type: new GraphQLNonNull(GraphQLID), },
...
})

const Query = {
    mails: {
        type: new GraphQLList(MailType),
        args: {
            senderId: { type: GraphQLID },
            isOffline: { type: GraphQLBoolean },
        },
        async resolve(root, args, req, ctx) {
            if (args.isOffline === false) {
                let a = await model.aggregate([
                  { $match: { isOffline: false } },
                ]);
                let b = await model.find({ isOffline: false });

                console.log(JSON.stringify(a) == JSON.Stringify(b)) /// return true
                return a // error
                return b // working
            }
            return model.find({senderId: args.senderId});
        }
    }
}
// with a
    "errors": [
        {
            "message": "Cannot return null for non-nullable field Mail.id."
        }]

У меня проблемы 2 часа, но я не получаю ответа.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 13 мая 2019

Возможно, у вас ошибка в схеме mongodb, а не в graphQl.убедитесь, что вы не определили свой идентификатор с помощью клавиши id, это должно быть _id.

Например, если вы используете mongoose, это может быть что-то вроде этого:

const MailSchema = new Schema({
  _id: {
    type: String,
    unique: true,
  },
  ....
  ....
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...