我在为排序的游标找到正确的语法时遇到了困难。
它需要做的是返回一个已排序的游标,然后我可以在每个项目处理后进行迭代。
这是我的函数在没有排序的情况下完美运行,但在sort()
添加后没有返回任何内容(我强烈怀疑语法问题,但似乎无法找到正确的文档):
db.collection('products').find({}).sort({rnd: 1},function(err, cursor){
console.log(found);
if(err){
console.log(err);
}
function processItem(err, item) {
if(err){
console.log(err);
}
if(item === null) {
console.log('cursor exhausted');
db.close();
}else{
someAsyncOperation(item,function(){
cursor.nextObject(processItem);
});
}
}
cursor.nextObject(processItem);
});
答案 0 :(得分:0)
我对语法做了错误的假设。 find()
返回的游标需要进行排序,然后迭代:
var cursor = db.collection('products4Scrape').find({}).sort({rnd: 1});
iterateCursor();
function iterateCursor(){
if(err){
console.log(err);
}
function processItem(err, item) {
if(err){
console.log(err);
}
if(item === null) {
console.log('cursor exhausted');
db.close();
}else{
someAsyncOperation(item,function(){
cursor.nextObject(processItem);
});
}
}
cursor.nextObject(processItem);
}