无法使用 Meteor 中的帐户包添加电子邮件

Cannot add email using Accounts package in Meteor

尝试使用 meteor 中的一些基本帐户方法时,

我总是收到以下错误:

Uncaught TypeError: Accounts.[function] is not a function

这令人困惑,因为 Accounts.createUser 等其他帐户方法按预期工作。其他一些 提到这可能与 meteor 过时有关。事实并非如此,因为我是 运行 最新版本 (1.2.1)。

此外,如果我启动 meteor shell 命令并搜索 Accounts.addEmail 或 Accounts.setUsername,shell 表明它们确实是函数。

我使用的相关包是:

就像 Blaze 在评论中所说的那样,您提到的两种方法都是服务器端的,正如您在 meteor doc 中看到的那样。由于 Meteor 没有附带内置的角色包,它允许您确保这些方法由合适的人根据您的喜好调用。您必须使用 Meteor.call('foo') 调用这些方法,同时确保安全或权限。

例如:

Meteor.methods({
    addNewEmail: function(email) {
        'use strict';

        Accounts.addEmail(this.userId, email);
        Accounts.sendVerificationEmail(this.userId, email);
        return true;
    }
});

这段代码确保调用该方法的人会向他自己而不是其他人添加一封电子邮件。您还可以使用 alanning:roles.

进行一些额外的检查