Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';关于mongodb中重复$addtoset的s关键字mongoskin(我读了一点英语)_Javascript_Node.js_Mongodb_Express_Mongoskin - Fatal编程技术网

Javascript 什么';关于mongodb中重复$addtoset的s关键字mongoskin(我读了一点英语)

Javascript 什么';关于mongodb中重复$addtoset的s关键字mongoskin(我读了一点英语),javascript,node.js,mongodb,express,mongoskin,Javascript,Node.js,Mongodb,Express,Mongoskin,对不起,我找不到答案,也看不懂英语 What's关键字可以找到关于以下示例代码的答案 for(var value in row){ db.collection('testdb').update({_id:'id'},{$addToSet:value}, { upsert: true },function(err){} ) value.emp

对不起,我找不到答案,也看不懂英语

What's关键字可以找到关于以下示例代码的答案

for(var value in row){
db.collection('testdb').update({_id:'id'},{$addToSet:value},                                                                            
   { upsert: true },function(err){}
)
value.empty();
}

我不知道为什么我的代码不能工作

testdb: { "_id" : "id", "v" : [v1], "p" : [ p1] }
重复更新后

{ "_id" : "id", "v" : [v1,p2], "p" : [ p1,p2] }
但应该是

{ "_id" : "id", "v" : [v1,v2], "p" : [ p1,p2] }   
致Neil Lunn

row count = 2 ;
row[0] = { "v" : [v2] }
row[1] = { "p" : [p2] }
法里德·努里·内沙特

app.post('index',function(req,res){

    var doc =[];
    var d ={};
    var e ={}
    for(var value in req.body){            
        d[value]=doc;                
        e['$each']=doc;
        d[value]=e;               
        db.collection('testdb').update({_id:req.body.field},{$addToSet:d},                                       
           { upsert: true },function(err){})                                            
        doc=[];//clear doc
        d={};//clear d
        }
    }
 // req.body.count = 2
 // req.body[0] = { "v" : [v2] }
 // req.body[1] = { "p" : [p2] }

  }

我认为你发布的代码没有复制这个问题。但是从
p
v
数组都获得了最后一个值这一事实来看,看起来您正在for循环的回调中运行update方法,因此当运行update方法时,键已经更改为最后一个键。您可以阅读此问题中有关此问题的更多信息:

我建议您尝试使用
for(req.body中的var值){
更改使用Object.keys:

Object.keys(req.body).forEach(function (value) {
    // Do whatever you do inside the loop in here.
});

这将捕获
value
参数,并且在下一次迭代中不会更改。我已经在a中解释了这一点。

您作为
value
传递的是什么?您在这里有两个数组(集合),并且没有向我们显示语句的这一部分。这里没有足够的信息。如果行是
[{v:[v2],p:[p2]}]
那么这里没有问题。请共享更多代码。发布一个可以在本地计算机上运行的示例来说明问题。非常非常感谢,这个问题让我困惑了很久好的!很高兴见到你!