在添加了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/

10-16 23:40