为什么mongodb的find()方法无法在Nodejs中找到最近插入的文档

时间:2017-04-20 13:50:02

标签: javascript node.js mongodb asynchronous mongodb-query

for (let obj in objects) {
    blabla.find({
        'url': obj.urlObj.url
    }).toArray((err, results) => {
        if (err) {
            return err
        }

        if (results.length === 0) {
            blabla.insert({
                url: obj.urlObj.url,
                views: 1
            })
        } else {
            blabla.update({
                _id: results[0]._id
            }, {
                $inc: {
                    views: 1
                }
            })
        }
    })
}

这段代码在我得到obj的循环中,现在我正在尝试在blabla集合中找到一个网址,如果该网址不存在,那么我正在插入该网址。如果它存在,那么我只是将视图数增加1.

假设在集合中只给我一组唯一的url,但我看到一些url要重复。这种重复的原因是插入任务无法完成并且它试图找到相同的URL并且找不到?

1 个答案:

答案 0 :(得分:1)

我会将对象存储在临时数组中,因此您可以解决多个请求问题。然后你可以在后台进行calmy迭代:

var temp=[];
app.post(function(){
  //whatever
  //store in temp
  temp.splice(0,objects.length,...objects);
  addtoDatabase();//start the background process
 });
 function addtoDatabase(){
  var obj=temp.pop();
  if(obj){
     youraddtodatabasefunc().done(function(){
        if(temp.length) process.nextTick(addtoDatabase);
     });
  }
 }