Как мне преобразовать результаты запроса mongoose в простой javascript? - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужна помощь

У меня много путаницы с использованием мангустов для контроля результатов запроса. Результатом запроса Mongoose иногда является плоский объект js, а иногда - объект mongoose.

Я хочу показать свою путаницу в коде.

        (async function (){
        try{
            const user1 = await User.findOne() 
            console.log(user1.constructor) // => mongoose Object => read only

            const user2 = await User.findOne().lean()
            console.log(user2.constructor) // => javascript Object => readable and writable

            const users3 = await User.find()
            console.log(users3.constructor) // => javascript Object => readable and writable
            //Why javascript object ? Despite not using lean()func

            const user4 = await new User({
                memberType : 'local',
                id : 'myId',
                nick : 'myNick',
                isAdmin : false,
                joinDate : new Date().toISOString(),
                sex : 'm'
            })
            .save()

            console.log(user4.constructor) // => mongoose Object => read only

            const user5 = await new User({
                memberType : 'local',
                id : 'myId',
                nick : 'myNick',
                isAdmin : false,
                joinDate : new Date().toISOString(),
                sex : 'm'
            })
            .save()
            .lean()

            //TypeError: (intermediate value).save(...).lean is not a function

        }
        catch(err){
            console.log(err)
        }
    })()

итак .. мои вопросы ...

1) почему users3.constructor является плоским javascript-объектом? несмотря на то, что не использовать lean ()

2) как сделать объект mongoose user4 (сохранить результат) в плоскости javascript?

(В случае user4, lean имеет ошибку.)

Я был бы очень признателен, если бы вы могли ответить.

хорошего дня:)

1 Ответ

0 голосов
/ 14 сентября 2018

почему users3.constructor является плоским javascript-объектом? несмотря на не использование наклоняться ()

users3 здесь Array, Array объекта мангуст; потому что find возвращает Array соответствующих элементов.

findOne в другой руке вернет вам объект мангуст напрямую.


как сделать объект mongoose user4 (сохранить результат) на плоскости javascript?

Используя метод .toObject(), lean является опцией только для запросов типа find; это не относится к save, как объяснено в здесь

Пример :

const user5 = (await new User({
  ...
}).save()).toObject();

enter image description here

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