Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor帐户的错误格式不一致。changePassword_Meteor_Error Handling_Meteor Accounts - Fatal编程技术网

Meteor帐户的错误格式不一致。changePassword

Meteor帐户的错误格式不一致。changePassword,meteor,error-handling,meteor-accounts,Meteor,Error Handling,Meteor Accounts,我正在使用Meteor 1.8.1,在Accounts.changePassword返回的错误中发现了不一致和未记录的行为 假设流星误差对象将包含一个“原因”参数 但是,如果由于用户未登录而更改密码的尝试失败,则错误对象不包含“原因”或“错误”,仅包含“消息”,我在文档中找不到这些信息 尽管未记录,“消息”似乎总是返回,但不一致,因为在密码不正确的情况下,它包含错误代码403,而在用户未登录的情况下,它不包含错误代码403 Accounts.changePassword(oldPassword,

我正在使用Meteor 1.8.1,在Accounts.changePassword返回的错误中发现了不一致和未记录的行为

假设流星误差对象将包含一个“原因”参数

但是,如果由于用户未登录而更改密码的尝试失败,则错误对象不包含“原因”或“错误”,仅包含“消息”,我在文档中找不到这些信息

尽管未记录,“消息”似乎总是返回,但不一致,因为在密码不正确的情况下,它包含错误代码403,而在用户未登录的情况下,它不包含错误代码403

Accounts.changePassword(oldPassword, newPassword, (error) => {
    console.log('error.message', error.message);
    // not logged in provides message

    console.log('error.reason', error.reason);
    // incorrect password provides reason and message
    if (error) {
        const text = error.reason || error.message;
        console.log('error', text);
    }
       // success
});
因此,我的问题是:

  • 我错过什么了吗?还是这种行为真的不一致、没有记录
  • 在这两种情况下,是否有一种简单的方法可以获得一致的错误消息
  • 我是否应该测试Meteor以不同格式返回错误的位置是否存在其他“问题”

非常感谢您的启发。

根据文档说明,
changePassword
方法仅在客户端上运行,因此您可以在尝试更改密码之前始终检查用户是否已登录

if (!Meteor.user()) {
    return reportError(new Error("Must be logged in to change password."), callback);
}
根据
帐户的描述,changePassword
是:

更改当前用户的密码必须登录

因此,当您尝试在没有用户登录时调用此函数时,响应未定义或不一致是合理的。是的,
Meteor.Error
对象的文档指定了
reason
属性,但是
Meteor.Errors
仅在方法希望返回描述性错误时抛出,而不是在非法调用方法时抛出


用户界面代码应确保除非用户登录,否则不会显示更改密码表单。如果您的更改密码表单仅向登录用户显示,那么您不必担心捕获这些未定义的错误。

我可以这样做,但它似乎对我上面发布的“捕获所有”代码没有任何帮助,而且它也没有回答有关不一致错误消息的问题?