我的代码
方法1:
...
var cursor = collection.find({}, {snapshot: true});
//i made sure to insert a new document to the collection before the below timer fires
setTimeout(function(){
cursor.each(function(err, docu){
console.log("cursor items", docu);
})
}, 15000);
方法2:
var cursor = collection.find({}, {snapshot: true});
cur.nextObject(function(err, item) {
console.log("Read the first doc alone", item)
})
//i made sure to insert a new document to the collection before the below timer fires
setTimeout(function(){
cursor.each(function(err, docu){
console.log("cursor items", docu);
})
}, 15000);
对于这两种方法,我启动了应用程序,在接下来的15秒内,我手动将一行插入到同一个数据库中。
方法1输出已存在的行和我在15秒内插入的行。
方法2立即输出第一行,此方法不打印我在15秒内插入的行,而不管{snapshot:true}或{snapshot:false}
问题
snapshot
方法的find
选项在方法1中无效{snapshot: true}
或{snapshot: false}
不打印
我手动插入的文件。按照下面的@Scott Hernandez尝试,但新插入的文档将出现在快照光标中。
var SimpleSchema = new mongoose.Schema({
name:{type:String}
}, {collection:'simple'});
var SimpleModel = mongoose.model('SimpleModel', SimpleSchema);
//var snapshotQuery = SimpleModel.find({}).setOptions({snapshot:true}); //try method 1
var snapshotQuery = SimpleModel.find({}).snapshot(true); //try method 2
setTimeout(function(){
snapshotQuery.exec(function(err, docs){
if(err){
console.log("ERROR", err);
}else{
console.log("setTimeout", docs);
}
})
},10000)