Mongoose:使用Schema.Types.Mixeddynamic创build密钥

这是我的模式:

var Account = new Schema({ username: String, likes: Schema.Types.Mixed }) 

在这里,我将“someProperty”属性添加到喜欢。 一切正常。

 var conditions = {'_id':req.body.id}; var update = {'$set':{'likes.someProperty': req.body.something}}; var callback = function (err, data) { if (err) return next(err); }; users.update(conditions, update, callback); 

更新我的文档后:

 'username': Fat Gandalf, 'likes': { someProperty: '100' } 

我的问题是,我不知道'someProperty'的名字。 我需要dynamic地创build它:

 var temp = 'likes.' + req.body.propertyName; // -- > 'likes.anything' var update = {'$set':{temp: req.body.something}}; 

上面的例子不起作用。 他妈的! 需要你的帮助!

使用方括号表示法构造字段对象,如下所示:

 var conditions = { "_id": req.body.id }, update = { "$set": {} }; update["$set"]["likes."+req.body.propertyName] = req.body.something; Users.update(conditions, update, callback); 

或使用计算的属性名称(ES6)

 var conditions = { "_id": req.body.id }, update = { "$set": { ["likes."+req.body.propertyName]: req.body.something } }; Users.update(conditions, update, callback);