Accounts.changePassword 在方法中不起作用

Accounts.changePassword doesn't work in Method

我正在开发一个 Meteor 应用程序,我想将对 Accounts.changePassword 的调用从客户端转移到一个方法。但是,当我尝试 运行 该方法时,出现此服务器错误:

Exception while invoking method 'setPersonalPassword' TypeError: Object [object Object] has no method 'changePassword'

这是违规代码:

'setPersonalPassword': function(oldPassword, newPassword){
    Accounts.changePassword(oldPassword, newPassword);
},

但是,此代码在客户端上运行良好:

'submit form': function (event) {
    event.preventDefault();
    var oldPassword = event.target.oldPassword.value;
    var newPassword = event.target.newPassword.value;
    Accounts.changePassword(oldPassword, newPassword)
}

我特别困惑,因为我在其他方法中成功地使用了 Accounts.createUser()Accounts.setPassword()

在服务器上,您应该使用 Accounts.setPassword,它可以与方法调用中的当前 userId 一起使用:

Meteor.methods({
  'setPersonalPassword': function (newPassword){
    const userId = this.userId
    Accounts.changePassword(userId, newPassword)
  }
},

参见:https://docs.meteor.com/api/passwords.html#Accounts-setPassword