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

标签 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 中找到一个网址集合,如果该 url 不存在,那么我将插入该 url。如果它存在,那么我只是将 View 数增加 1。

它应该只给我集合中唯一的一组网址,但我看到一些网址是重复的。这种重复的原因可能是什么,是插入任务无法完成并且它尝试查找相同的 url 但找不到?

最佳答案

我会将对象存储在临时数组中,这样您就可以解决多个请求问题。然后你就可以在后台平静地迭代:

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);
     });
  }
 }

关于javascript - 为什么mongodb的find()方法无法找到Nodejs中最近插入的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43521469/

相关文章:

javascript - 如何获取数组中 objectId 的内容 - Mongoose/NodeJs

mongodb - 我需要有关分布式媒体存储数据存储的建议

node.js - Bitnami MEAN 堆栈无法连接到本地 mongoDb

javascript - 从 run.schedule 获取 Controller 变量

javascript - window.localStorage.setItem() 的生命周期

node.js - 如何在 Electron-Angular 项目中使用 forever-monitor?

javascript - Dropbox V2 文件上传端点 - 无效内容类型 - dropbox-for s-hack

javascript - 为什么while循环会阻塞事件循环?

javascript - $(this).parent().remove() 导致页面刷新

javascript - 我如何在 react 中应用多个过滤器?