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

标签 database mongodb mongoose

我需要帮助

我对使用 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/

相关文章:

mysql - 如何设计具有动态列的关系数据库?

php - 在第 3 个表中插入数据,并在其他 2 个表中插入值

python - MongoDB、MongoEngine : unique list items

javascript - 如何获取mongodb中每个类别的最新文章?

php - 仅当有人提交新消息时加载数据

sql - ORA-00904: 标识符无效

javascript - 平面文件数据库系统,特别适用于 javascript

javascript - 处理 meteor 中的新记录

node.js - Mongo/Mongoose 聚合 - $redact 和 $cond 问题

node.js - NPM install 未安装所有组件,node-gyp 失败