首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要在Mongoose查询中排除.lean()?

为什么要在Mongoose查询中排除.lean()?
EN

Stack Overflow用户
提问于 2018-08-22 18:30:46
回答 1查看 76关注 0票数 0

我很想知道在Mongoose查询中不使用.lean()的好处是什么。Mongoose响应中的额外开销实际上允许您做什么?

我发现,除非在查询上使用.lean()方法,否则很难将文档作为对象返回。

我是不是遗漏了什么?在我的应用程序中使用Mongoose文档之前,我是否会因为剥离Mongoose文档而失去大量未开发的好处?

EN

回答 1

Stack Overflow用户

发布于 2018-08-23 06:55:05

我还没有完全测试过,但是这个ARTICLE BY SAKSHI TYAGI很好地比较了不使用.lean()方法和使用.lean()方法的mongoose查询的执行时间,清楚地表明不使用它的查询几乎是使用.lean()方法的3倍。文章将此归因于.lean()方法只返回一个javascript对象的事实,通过这样做,所有的"moongoose魔术“以及方法(包括save等)和getter/setter都被删除了。

一方面,我想说它有助于在向用户发送响应之前快速向返回对象添加新字段,如下所示;

代码语言:javascript
复制
.then(result=>{
    result.something = "another thing";
    return res.json(result);
})

请注意,没有.lean()的查询不会返回javascript对象,因此在使用语法向对象添加新字段甚至删除之前,您需要将结果转换为javascript对象,如下所示;

代码语言:javascript
复制
.then(result=>{
    result = result.toObject();
    delete result.something; 
    return res.json(result);
})

你可以在这个mongoose doc page上找到上面的信息,因为它引用了“这是高性能只读场景中的一个很好的选择,特别是在与流结合的时候。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51964874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档