2015-11-03 32 views
1

與此問題類似https://stackoverflow.com/questions/11183480/how-to-set-key-by-var-in-mongoose-node-js#=我無法獲取findOneAndUpdate函數中的字段變量。它把它當作文字領域。我試圖實現他們的解決方案,但它沒有奏效。我沒有得到一個錯誤,它只是沒有更新任何東西。findOneAndUpdate中的字符串字面問題Mongoose函數

var cat = new Cat(); 

var field = (req.body[1].type); 

Cat.findOneAndUpdate({ 'sid': req.sessionID }, {$push: {field: req.body[0]}}, {'upsert': true, 'new': true}, function (err, data){ 

回答

2

您需要使用支架[]記號,以便將對象屬性的「鍵」設置爲自變量的值:

var cat = new Cat(); 

// Just use it in the below assignment instead 
//var field = (req.body[1].type); 

var update = { "$push": { } }; 
update.$push[req.body[1].type] = req.body[0]; 

Cat.findOneAndUpdate(
    { 'sid': req.sessionID }, 
    update,      // and reference in here 
    {'upsert': true, 'new': true}, 
    function (err, data){ 

這就是如何動態地分配在JavaScript中的關鍵。

+0

好的,這個工程很好。我的問題是如何工作?爲什麼需要第一部分?它爲什麼在引號中?您擁有或可以發佈的任何資源都會很棒。謝謝! –

+0

@AndrewThreadgill第一部分是什麼?我所做的所有事情都是「註釋掉」你的代碼,以便你能看到你不需要的東西並添加正確的代碼。這不是「報價」或需要,但只是爲了向你展示你不需要的東西。 –

+0

我指的是var update = {「$ push」:{}}; –