【发布时间】:2019-02-18 20:06:23
【问题描述】:
我需要帮助
我对使用猫鼬控制查询结果有很多困惑。 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)如何将猫鼬对象user4(保存结果)制作成平面javascript?
(如果是user4,lean有错误。)
如果您能回复我将不胜感激。
祝你有美好的一天:)
【问题讨论】: