为什么这段代码似乎没有向Meteor.users.profile对象添加记录?

时间:2014-08-09 16:35:44

标签: javascript meteor

我试图创建一个包含个人资料表单的页面。所以我有一个名字的文本框'字段和添加它的按钮。

所以在我的客户端代码中我有:

  Template.profile.events({
     'click input.add': function () {
        Meteor.users.update({_id: this._id}, { $set:{"profile.name": profile_firstname}} )
     }
  });

在我的模板中我有:

<template name="profile">
{{#if currentUser}}
<div class="profile">
  <h2>Profile</h2>
  <input type="text" id="profile_firstname" />
  <input type="button" class="add" value="Update Profile" />
</div>
{{/if}}
</template>

当我尝试在控制台上找到用户时,我找不到个人资料。我还需要做些什么来实现这个目标?

1 个答案:

答案 0 :(得分:1)

尝试使用Meteor.userId()而不是this._id

Template.profile.events({
  'click input.add': function (e, t) {
    var firstname = t.$('#profile_firstname').val();
    Meteor.users.update({_id: Meteor.userId()}, { $set:{"profile.name": firstname}} );
  }
});

在点击处理程序中,this指的是模板输入元素的数据上下文。或者,您也可以使用#with设置上下文,原始代码也可以使用。

<template name="profile">
{{#if currentUser}}
<div class="profile">
  <h2>Profile</h2>
  {{#with currentUser}}
  <input type="text" id="profile_firstname" />
  <input type="button" class="add" value="Update Profile" />
  {{/with}}
</div>
{{/if}}
</template>