gpt4 book ai didi

database - 如何将 mongoose 查询结果转换为纯 javascript?

转载 作者:可可西里 更新时间:2023-11-01 10:46:00 26 4
gpt4 key购买 nike

我需要帮助

我对使用 Mongoose 控制查询结果有很多困惑。Mongoose的查询结果有时候是plane 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有错误。)

如能回复,将不胜感激。

祝你有美好的一天:)

最佳答案

why users3.constructor is plane javascript object ? despite not using lean()

users3在这里是一个Array,一个mongoose对象的Array;因为 find 返回匹配元素的 Array

findOne 另一方面会直接返回一个 mongoose 对象。


how to make mongoose object user4(save result) to plane javascript ?

使用 .toObject() 方法,lean 仅适用于像 find 这样的查询;它不适用于 save,如 here 中所述

示例:

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

enter image description here

关于database - 如何将 mongoose 查询结果转换为纯 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52324701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com