loo*_*omi 4 javascript mongodb meteor
我想在我的代码中指定在DB更新中动态设置/更新哪个属性.像这样的东西:
var fieldname = "firstname"
var name = "loomi"
Meteor.users.update({_id:Meteor.user()._id},
{$set:{"profile."+fieldname: name}})
Run Code Online (Sandbox Code Playgroud)
(个人资料[fieldname]无法正常工作.)
上述结果应该与此相同:
Meteor.users.update({_id:Meteor.user()._id},
{$set:{"profile.firstname": "loomi"}})
Run Code Online (Sandbox Code Playgroud)
我怎样才能以一种干净的方式实现这一目标呢?(没有让整个对象进行操作并将整个对象发回.)
Jon*_*ski 16
您当前无法在对象文字中定义变量键.你将不得不构建对象,然后传递它:
var $set = {};
$set['profile.' + fieldname] = name;
Meteor.users.update({_id:Meteor.user()._id}, { $set: $set });
Run Code Online (Sandbox Code Playgroud)
[更新]
ECMAScript 6定义了对对象文字/初始值设定项中的计算键的支持.
因此,使用与ES6兼容的引擎,现在可以将其写为:
Meteor.users.update(
{ _id: Meteor.user()._id },
{ $set: { ['profile.' + fieldname]: name } }
);
Run Code Online (Sandbox Code Playgroud)