繁体   English   中英

如何更新流星中的电子邮件地址?

[英]How can I update an email address in meteor?

嗨,我正在使用Meteor构建应用程序,需要更新我的电子邮件地址。 我正在使用流星帐户包。

我的表单将电子邮件值传递到一个accountDetails对象中,该对象将传递给一种方法来更新我的个人资料(包括我的电子邮件):

Meteor.users.update({_id: this.userId},
{
   $set: {
            'emails.$.address': accountsDetail.email
    }

});

这给了我错误:

Exception while invoking method 'saveAccountInfo' MongoError: The positional operator did not find the match needed from the query. Unexpanded update: emails.$.address

这是我的用户架构:

{
"_id" : "12345",

"emails" : [
    {
        "address" : "abc123@gmail.com",
        "verified" : false
    }

有人可以帮忙吗? 先感谢您!

如果确定用户有一个地址,可以使用emails.0.address而不是emails.$.address

这几乎适用于所有用例。 例外是当有许多与用户关联的电子邮件时。 在这种情况下:

如果您在服务器上并且仅在服务器上,则如果有多个地址,则可以使用位置运算符来更新特定的电子邮件。 在这种情况下,您需要在更新的查询部分中指定当前电子邮件。 即: {_id: this.userId, 'emails.$.address' : <current address> }

$位置更新运算符当前在Meteor的mongo客户端上不可用。

由于每个用户都可以拥有多个地址(它是一个数组-有关详细信息,请参见http://docs.meteor.com/#/full/meteor_users ),因此您需要指定要更新的密钥(在这种情况下,关键是地址本身)

Meteor.users.update({_id: this.userId, "emails.address":"me@domain.com"},
$set:{'emails.$.address': accountsDetail.email}
});

如果每个用户只有一封电子邮件,您还可以考虑删除该电子邮件并插入新的电子邮件。 有关详细信息,请参见http://docs.mongodb.org/manual/reference/operator/update/pop/

希望这可以帮助。

问候,

雷内

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM