在Meteor中,当前用户只有一个“名称”字段。我想在first_name
下添加last_name
和profile
。
我的user_edit.html
表单:
<template name="userEdit">
<div id="login-wrapper">
<form id="login-form" action="action" class="form login-form">
<div class="control-group">
<div class="controls">
<input name="first_name" type="text" value="" placeholder="First Name"/>
</div>
</div>
<div class="control-group">
<div class="controls">
<input name="last_name" type="text" value="" placeholder="Last Name"/>
</div>
</div>
<div class="control-group">
<div class="controls">
<input type="submit" value="Submit" id="submit-website-button" class="btn btn-primary"/>
</div>
</div>
</form>
</div>
</template>
我有一个用于编辑当前用户的表单:
我不太确定如何更新user_edit.js
中的当前用户,并为名字和姓氏添加其他字段。以下代码不起作用。
Template.userEdit.events({
'submit form': function(e) {
e.preventDefault();
var currentUserId = this._id;
var userProperties = {
first_name: $(e.target).find('[name=first_name]').val(),
last_name: $(e.target).find('[name=last_name]').val()
}
User.update(currentUserId, {$set: userProperties}, function(error) {
if (error) {
// display the error to the user
alert(error.reason);
} else {
Router.go('userPage', {_id: currentUserId});
}
});
}
});
修改
以下是应用答案后我的JS文件的工作版本:
Template.userEdit.events({
'submit form': function(e) {
e.preventDefault();
Meteor.users.update( Meteor.userId(),
{
$set: {
'profile.first_name': $(e.target).find('[name=first_name]').val(),
'profile.last_name': $(e.target).find('[name=last_name]').val(),
'profile.cell_phone': $(e.target).find('[name=cell_phone]').val(),
'profile.email': $(e.target).find('[name=email]').val(),
'profile.business_name': $(e.target).find('[name=business_name]').val(),
'profile.website': $(e.target).find('[name=website]').val()
}
},
function(error) {
if (error) {
// display the error to the user
alert(error.reason);
} else {
Router.go('userPage', {_id: Meteor.userId() });
}
}
);
}
});
答案 0 :(得分:1)
有几件事。我没有使用Meteor的过去两次更新,所以可能会添加“用户”作为光标来更新当前用户,但根据我的经验,这是您更新当前用户的方式:
Meteor.users.update( Meteor.userId(), { $set: { 'profile.first_name': "example" } } );
另请注意我必须指定'profile.first_name',在您的代码段中,当用户仅允许编辑配置文件部分客户端时,您将尝试在用户对象的基础中设置first_name和last_name。最后我不确定你的模板上下文中有什么'这个'所以我会设置currentUserId = Meteor.userId(),这是一种获取当前用户id的便捷方式。