Запрос Graphql разрешает только поле _id, остальные поля имеют значение null - PullRequest
1 голос
/ 27 марта 2020

Мой запрос GraphQL разрешает docID и docTitle в ноль. Хотя данные извлекаются из БД. Только поле _id возвращается. Когда я консольный журнал, я вижу данные.

Запрос GraphQL

query{
  docs{
    docId
    docTitle
    _id
  }
}

Мой распознаватель

const getDocs = async (_parent, _args, context, _info) => {
    const docs = await context.app.models.docs.find()
    return docs
}

Схема документов

type Docs {
    _id: ID!
    docId: String
    docTitle: String
}

Вкл. игровая площадка GraphQL, вот что я получаю

{
  "data": {
    "getDocs": [
      {
        "docId": null,
        "docTitle": null,
        "_id": "5e7c9007f4c3"
      }
    ]
  }
}

Но когда я консольный журнал, я могу видеть данные для всех полей

[
  {
    _id: 5e7c9007f4c3,
    docId: 'c18c-57e4b5134cbe',
    docTitle: 'cloud',
    __v: 0
  }
]

Что мне не хватает, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Я предполагаю, что типы docId и docTitle, возвращаемые из БД, явно не являются строками, следовательно, где-то происходит проверка типа, которая приводит к удалению их значений из выходного объекта docs. Попробуйте добавить в запрос параметр lean , чтобы каждый документ в результате запроса был преобразован в объект javascript, что должно помочь обеспечить преобразование значений docId и docTitle в строки.

Обновите ваш запрос к БД примерно так:

await context.app.models.docs.find({}, {}, { lean: true })
0 голосов
/ 27 марта 2020

Использование параметра aggregate также разрешило запрос правильно

const getDocs = async (_parent, _args, context, _info) => {
return await context.app.models.docs.aggregate([
    {
        $project: { docId:1, docTitle:1 },
    },
])}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...