I need help
I have a lot of confusion about using mongooses to control query results. Mongoose's query result is sometimes plane js object and sometimes mongoose object.
I want to show my confusion in code.
(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)
}
})()
so.. my questions are...
1) why users3.constructor is plane javascript object ? despite not using lean()
2) how to make mongoose object user4(save result) to plane javascript ?
(In case of user4, lean has an error.)
I would be very grateful if you could reply.
have a nice day :)
