2016-03-02 86 views
0
UserEventsDetails.findOneAndUpdate({"username": username}, 
    {$pull: { req.query.eventtype : { "name": req.query.eventname } } 
    }, 
    {safe: true, upsert: true, new: true}, 
    function(err, model){ 
    if (err){ 
    console.log("ERROR: ", err); 
    res.send(500, err); 
    }else{ 
    res.status(200).send(model); 
    } 
    } 
); 

我正在使用它從mongodb中拉出。但不能使用req.query.evenrname試圖從可變密鑰中取出貓鼬

回答

0

創建更新文件首先使用正方形bracket notation,或者如果使用ECMAScript 6計算的值與對象文字從變量初始化屬性:

var update = {}; 
update[req.query.eventtype] = { "name": req.query.eventname }; 

// or with ES6 
let update = { 
    [req.query.eventtype]: { "name": req.query.eventname } 
} 

然後使用上述對象在你的更新語句:

UserEventsDetails.findOneAndUpdate(
    { "username": username }, 
    { "$pull": update }, 
    { "upsert": true, "new": true}, 
    function(err, model){ 
     if (err){ 
      console.log("ERROR: ", err); 
      res.send(500, err); 
     }else{ 
      res.status(200).send(model); 
     } 
    } 
); 
+0

非常感謝..我是否需要設置 –

+0

同爲$如果變量鍵字段是一個數組,那麼你將需要'$ set'運營商的幫助下一起postional'$'操作符更改真正確定要更新的元素在陣列中的位置。 – chridam

+0

你可以在這裏舉個例子或者指向我的任何地方 –