在添加了deprecationwarninghere之后,似乎可以说cursor()
是stream()
的替代品,但是,有些功能似乎已经落在后面了。
例如,这个不推荐使用的代码将有“精益”文档,这些文档不是mongoose.Document
的实例:
Cat
.find({ }).lean()
.stream()
.on('data', function (data) {
var value = data instanceof mongoose.Document;
console.log('lean().stream() data instanceof mongoose.Document', value);
})
.on('end', function () { });
此代码将包含Mongoose文档,即使使用了
lean()
:Cat
.find({ }).lean()
.cursor()
.on('data', function (data) {
var value = data instanceof mongoose.Document;
console.log('lean().cursor() data instanceof mongoose.Document', value);
})
.on('end', function () {});
这是非常奇怪的,因为在进行此更改时它们的源代码看起来是相同的:
stream()
https://github.com/Automattic/mongoose/blob/94557653dba2cd9046f1b2ffab427cef4632a7c3/lib/query.js#L2769
cursor()
https://github.com/Automattic/mongoose/blob/94557653dba2cd9046f1b2ffab427cef4632a7c3/lib/query.js#L2816
使用
cursor()
是否有正确的方法实现这一点,或者我发现了一个bug?提前感谢;) 最佳答案
我在研究后发现(感谢Johnnyhk的评论),它似乎没有在cursor()
中实现,所以我提出了一个pull请求来解决这个问题https://github.com/Automattic/mongoose/pull/4255
关于node.js - 从stream()移动到cursor()时,lean()不再有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37934739/