首页 > 解决方案 > Accounts.changePassword 在方法中不起作用

问题描述

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

调用方法“setPersonalPassword”类型错误时出现异常:对象 [object Object] 没有方法“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()其他方法。

标签: meteormeteor-accountsmeteor-methods

解决方案


在服务器上,您应该使用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


推荐阅读