我想在我的Meteor应用程序的User.profile属性中构建一个'主题'对象。以下是我到目前为止的情况:
Template.addToReviewList.events({
'submit form': function(theEvent) {
theEvent.preventDefault();
var selectedTopic = Session.get('selectedTopic');
Meteor.users.update({_id:Meteor.user()._id}, {$set: {'profile.topics': selectedTopic}});
}
});
这可以按预期工作,创建类似User.profile.topics:math。如果我选择一个新主题并再次运行它,我的主题会相应更新。这是预期的。
我想建立一个'主题'对象,这样每次运行该函数时,都会产生如下结果:
User.profile.topics: { topic1: true, topic2: true, topic3: true,...}
我已经厌倦了我能想到的User.profile.topics的每个字符串组合,并且没有一个能够工作。这是一个例子:
Template.addToReviewList.events({
'submit form': function(theEvent) {
theEvent.preventDefault();
var selectedTopic = Session.get('selectedTopic');
Meteor.users.update({_id:Meteor.user()._id}, {$set: {'profile.topics.'+selectedTopic: true}});
}
});
我没有正确逃避某事吗?我是否需要使用不同的Mongo Field运算符?还有别的吗?
提前致谢。
答案 0 :(得分:0)
如果要在对象中创建动态键,则无法使用对象文字来创建动态键。 相反,您需要使用此方法动态地将键添加到对象;
var setobject = {};
setObject['profile.topics.'+selectedTopic] = true;
Meteor.users.update({_id:Meteor.user()._id}, {$set:setObject});