[英]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.