解决方法
最简单的方法是使用补丁mongoose.Query类添加默认精益选项:
var __setoptions = mongoose.Query.prototype.setoptions; mongoose.Query.prototype.setoptions = function(options,overwrite) { __setoptions.apply(this,arguments); if (this.options.lean == null) this.options.lean = true; return this; };
Mongoose为每个查询创建mongoose.Query的新实例,并且setoptions调用是mongoose.Query构造的一部分.
通过修补mongoose.Query类,您将能够在全局范围内转换精益查询.所以你不需要路径所有的mongoose方法(find,findOne,findById,findOneAndUpdate等).
Mongoose使用Query类进行内部调用,如populate.它将原始查询选项传递给每个子查询,因此应该没有问题,但无论如何要小心这个解决方案.