更新流星中的用户电子邮件地址

Update user email address in meteor

我想更新 meteor 中的电子邮件地址:

Meteor.users.update(this._id, {$set: {"emails[0].address": "deleted_" + preEmail }});

但不是更新电子邮件数组、0 参数,然后是地址,而是创建一个新字段,例如电子邮件 [0],然后是地址。 有趣的是,在另一个 .js 文件中它可以正常工作!

我认为问题是您的过滤器有误。

Meteor.users.update({_id:this._id}, {$set: {"emails[0].address": "deleted_" + preEmail }});

您可以先设置数组,然后像这样更新电子邮件

var newEmail = [{address:email, verified: false}]
Meteor.users.update({_id:this._id}, {$set: {emails:newEmail }});

帐户包带有用于更改电子邮件地址的预构建功能。

import { Accounts } from 'meteor/accounts-base'

//get old email
const oldEmail = Meteor.users.findOne(this.userId).emails[0].address;

//add new email
Accounts.addEmail(this.userId, args.email);

//remove old email
Accounts.removeEmail(this.userId, oldEmail);

你快到了。在您的代码中,将“emails[0].address”更改为 emails.0.address。我的代码在 Angular 2 流星中工作。我希望它也对你有用:)

 Meteor.users.update({
        _id: id
     }, 
     {
        $set: {
            'emails.0.address': address,
            "username": username
        }
    });