Meteor accounts password: TypeError: Accounts.setPassword is not a function

Meteor accounts password: TypeError: Accounts.setPassword is not a function

我正在使用: 流星1.8版, 账户密码@1.5.1

调用时:

  Meteor.methods({
    setPassword(newPassword, userId) {
      check(userId, String);
      check(newPassword, String);
      if(Meteor.user().isAdmin){
        Accounts.setPassword(userId, newPassword);
      }
    },
  });

来自

Meteor.call('setPassword', password, this.userId);

我收到这个错误: Exception while simulating the effect of invoking 'setPassword' TypeError: Accounts.setPassword is not a function 但密码仍然设置...

Meteor 方法可以 运行 在服务器端和客户端 (see here)。这里的错误来自客户端:simulating the effect 表示客户端正在尝试计算对服务器查询的乐观答案。

Accounts 对象在客户端和服务器端都可用,但我敢打赌,出于安全原因,Accounts.setPassword 函数仅在服务器端可用。

为避免该错误,您可以:将 meteor 方法定义放在服务器专用文件夹中 see here (like in this file app_code/imports/api/accounts/server/methods.js), or wrap it with if(Meteor.isServer) see here,如下所示:

if(Meteor.isServer){
    Meteor.methods({
        setPassword(newPassword, userId) {
            check(userId, String);
            check(newPassword, String);
            if(Meteor.user().isAdmin){
                Accounts.setPassword(userId, newPassword);
            }
        },
    });
}