添加当前用户配置文件metro.js的文档

Add document for current user profile meteor.js

本文关键字:js 文档 metro 配置文件 用户 添加      更新时间:2023-09-26

我想创建一个表单,为注册用户添加额外的配置文件详细信息(地址、电话号码)。这是我的js文件:

    Template.userProfileEdit.events({
    'submit form': function(event, template){
        event.preventDefault();
        var addressVar = template.find('#inputaddress');
        var profile = {};
        var fields = template.findAll('input[type="text"]');
        for(var i = 0; i<fields.length; i++) {
            profile[$(fields[i]).attr('name')] = $(fields[i]).val();
        }
        if(Meteor.users.update(Meteor.userId(), {$set: {profile: profile}})) {
            $(template.find('#thirdNodal')).modal('hide');
        }
    }
});
Template.userProfileEdit.helpers({
    address: function(){
        return Meteor.user().profile.address;
    }
});
Accounts.findUserByUsername = function (username) {
    return Accounts.findUserByQuery({
        username: username
    });
};
Accounts.findUserByEmail = function (email) {
    return Accounts.findUserByQuery({
        email: email
    });
};

这是我的html表单:

<tr>
    <td>Address</td>
    <td>{{currentUser.profile.address}}</td>
</tr>

有人知道如何插入(地址)并更新它的最简单方法吗?还是可以?

这离一个有效的解决方案不远了,但我看到了一些问题。

Meteor.users.update(Meteor.userId(), {$set: {profile: profile}})将覆盖配置文件对象,擦除已经存储在那里的任何内容。此外,授予用户客户端更新用户文档的权限是一场等待发生的安全灾难。理想情况下,您应该调用位于服务器文件夹中的流星方法,这样您就可以通过验证服务器上的更改来保持严格的权限。

其次,如果您使用流星的模板系统(blaze),那么您几乎不需要使用jQuery选择器来检索值。相反,您可以查找HTML表单,以便在单击提交按钮时使用模板事件轻松访问表单字段。

你应该完成流星教程,它将为你提供所有这些信息和更多。