findOneAndUpdate Mongoose函数中的字符串文字问题

时间:2015-11-03 00:14:58

标签: javascript node.js mongodb mongodb-query

与此问题类似https://stackoverflow.com/questions/11183480/how-to-set-key-by-var-in-mongoose-node-js#=我无法在 findOneAndUpdate 函数中获取字段变量。它需要它作为文字领域。我试图实施他们的解决方案,但它没有用。我没有得到错误它只是没有更新任何东西。

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){

1 个答案:

答案 0 :(得分: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中动态分配密钥。