Accounts.changePassword не работает в методе - PullRequest
2 голосов
/ 13 июля 2020

Я работаю над приложением Meteor и хочу переместить вызов Accounts.changePassword от клиента к методу. Однако, когда я пытаюсь запустить метод, я получаю следующую ошибку сервера:

Исключение при вызове метода setPersonalPassword TypeError: Object [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() другими методами.

1 Ответ

2 голосов
/ 13 июля 2020

На сервере вы должны использовать 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

...