【问题标题】:Accounts.changePassword doesn't work in MethodAccounts.changePassword 在方法中不起作用
【发布时间】:2020-07-20 02:58:13
【问题描述】:

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

调用方法“setPersonalPassword”类型错误时出现异常: 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()

【问题讨论】:

    标签: meteor meteor-accounts meteor-methods


    【解决方案1】:

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

    【讨论】:

    • 我正要问为什么会这样,但我只是注意到在每个函数的文档的右上角都显示了 Server、Client 或 Anywhere。感谢您的帮助!
    • 有谁知道为什么 Meteor 具有与仅在客户端工作的服务器端交互的功能?这似乎与方法的范式相反。我可以把它们想象成你从客户端调用的方法,但是为什么它们中的一些在服务器上工作呢?
    • 他们为你抽象出作品。您可以检查他们在文档中链接的来源。也有一些方法被调用,但它们使使用这些函数更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2013-08-05
    • 2015-06-06
    • 2015-02-11
    • 2014-05-14
    • 2016-10-17
    相关资源
    最近更新 更多