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/