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

问题描述 投票:0回答:1

我很想知道在 Mongoose 查询上不使用

.lean()
有什么好处。 Mongoose 响应中的额外开销实际上可以让您做什么?

我发现除非我在查询中使用

.lean()
方法,否则将文档作为对象返回变得非常困难。

我错过了什么吗?在我的应用程序中使用 Mongoose 文档之前,我是否会失去大量未开发的好处?

mongoose
1个回答
1
投票

我还没有完全测试过,但是这篇SAKSHI TYAGI的文章很好地比较了不使用和使用

.lean()
方法的猫鼬查询的执行时间,它清楚地表明,没有它的查询的执行时间是使用
.lean()方法的近3倍
方法。这篇文章将此归因于以下事实:
.lean()
方法仅返回一个 javascript 对象,并通过这样做剥离了所有“moongoose magic”以及方法(包括 save 等)和 getter/setter。

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

.then(result=>{
    result.something = "another thing";
    return res.json(result);
})

请注意,没有

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

.then(result=>{
    result = result.toObject();
    delete result.something; 
    return res.json(result);
})

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

© www.soinside.com 2019 - 2024. All rights reserved.