【发布时间】:2017-12-01 00:07:54
【问题描述】:
我在更新 Meteor 中当前用户的电子邮件地址时遇到问题。问题代码在这里(都是客户端代码):
var id = Meteor.userId();
if (firstName) {
Meteor.users.update(
{ _id: id },
{ $set: { "profile.firstName": firstName }}
)};
if (lastName) {
Meteor.users.update(
{ _id: id },
{ $set: { "profile.lastName": lastName }}
)};
var oldEmail = Meteor.user().emails[0].address;
if (newEmail) {
Meteor.users.update(
{ _id: id, 'emails.0.address': oldEmail },
{ $set: { 'emails.0.address': newEmail }}
)};
前两行工作正常(用户可以更新他们的名字和姓氏),但最后一次更新失败,控制台中显示以下错误: “errorClass {isClientSafe:true,错误:403,原因:“不允许。不受信任的代码只能按 ID 更新文档。”
我不明白这个错误,因为我 AM 通过 ID 更新 - 或者至少我认为我是。
另外:如果我删除对旧电子邮件的引用,我会在控制台中收到一个简单的“更新失败。访问被拒绝”错误,而不是上述错误。
有没有办法只用客户端代码来解决这个问题?
(我意识到我还需要将“已验证”密钥重置为 false,但我猜这是另一个问题)
【问题讨论】: