Mongoose Document.toObject выдает ошибку GraphQL - PullRequest
0 голосов
/ 11 декабря 2018

Я использую mongoose и express-graphql вместе в проекте.Я хочу преобразовать документ в объект, используя метод .toObject(), описанный здесь , а затем вернуть значение в GraphQL.

Схема GraphQL:

type User {
    _id: ID,
    // ...
}

Код:

const Me = function (params, req) {
    if (!req.user) throw Error('Not logged in');
    return req.user.toObject();
};

module.exports = Me;

Однако появляется следующая ошибка:

ID не может представлять значение: {_bsontype: "ObjectID", id: <Буфер 5b 9b cb 54 df d9 c5 1e 04 e4 eb 54>}

Я попытался вывести _id на экран, используя console.log(req.user.toObject()._id),но он просто показывает строку идентификатора.По какой-то причине работает следующий код:

const Me = function (params, req) {
    if (!req.user) throw Error('Not logged in');
    return JSON.parse(JSON.stringify(req.user.toObject()));
};

module.exports = Me;

Я не уверен, что заставляет GraphQL читать поле _id как нестроковое значение прямо из метода .toObject().Спасибо за помощь!

1 Ответ

0 голосов
/ 11 декабря 2018

Поскольку вы используете 14.0.2, у которого есть проблема , изменение в пакете graphql, представленном в последнем выпуске, и уже содержит PR , который решает эту проблему.Так что лучше, если вы переключитесь на 0.13.2, который отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...