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并且找不到?
答案 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);
});
}
}