如何在Meteor中将user.profile属性设置为变量名?

时间:2014-09-04 18:44:14

标签: mongodb meteor

我想在我的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运算符?还有别的吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果要在对象中创建动态键,则无法使用对象文字来创建动态键。 相反,您需要使用此方法动态地将键添加到对象;

var setobject = {};
setObject['profile.topics.'+selectedTopic] = true;
Meteor.users.update({_id:Meteor.user()._id}, {$set:setObject});