流星帐户密码:TypeError:Accounts.setPassword不是一个函数

时间:2019-01-21 13:24:47

标签: meteor meteor-accounts

我正在使用: 流星1.8版, accounts-password@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 但是密码仍然设置...

1 个答案:

答案 0 :(得分:1)

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

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

为避免此错误,您可以:将流星方法定义放在仅服务器的文件夹see here中(例如在此文件app_code/imports/api/accounts/server/methods.js中),或用if(Meteor.isServer) { {3}}:

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