未使用不安全的包更新Meteor.users.update并自动发布



我已经安装了以下智能包:

standard-app-packages
autopublish
insecure
preserve-inputs
bootstrap-3
accounts-base
accounts-password
jquery
accounts-ui-bootstrap-3
iron-router

我正在尝试更新用户的电子邮件地址,因为我已经安装了不安全的自动发布包,我想我可以这样做:

Template.settings.events({
  'click #update': function (evt, tmpl) {
    evt.preventDefault();
    var email = tmpl.find("#inputEmail").value;
    Meteor.users.update({_id:Meteor.userId()}, {$set:{"emails":[{address:email}]}});
  }
});

但是我一直得到:update failed: Access denied

也许这个文档中的注释对你有帮助。

默认情况下允许用户使用Accounts指定他们自己的配置文件字段。createUser并使用Meteor.users.update修改它。要允许用户编辑其他字段,请使用Meteor.users.allow。禁止用户修改用户文档

您尝试更改电子邮件字段。首先,电子邮件字段应该在配置文件文件夹中(如果您想公开电子邮件)。所以你需要输入

$set: {
        profile: {
            emails: {
            }
        }
    }

如果你改变了配置文件之外的另一个字段,你必须定义allow-rules

最新更新