Meteor帐户的错误格式不一致。changePassword
我正在使用Meteor 1.8.1,在Accounts.changePassword返回的错误中发现了不一致和未记录的行为 假设流星误差对象将包含一个“原因”参数 但是,如果由于用户未登录而更改密码的尝试失败,则错误对象不包含“原因”或“错误”,仅包含“消息”,我在文档中找不到这些信息 尽管未记录,“消息”似乎总是返回,但不一致,因为在密码不正确的情况下,它包含错误代码403,而在用户未登录的情况下,它不包含错误代码403Meteor帐户的错误格式不一致。changePassword,meteor,error-handling,meteor-accounts,Meteor,Error Handling,Meteor Accounts,我正在使用Meteor 1.8.1,在Accounts.changePassword返回的错误中发现了不一致和未记录的行为 假设流星误差对象将包含一个“原因”参数 但是,如果由于用户未登录而更改密码的尝试失败,则错误对象不包含“原因”或“错误”,仅包含“消息”,我在文档中找不到这些信息 尽管未记录,“消息”似乎总是返回,但不一致,因为在密码不正确的情况下,它包含错误代码403,而在用户未登录的情况下,它不包含错误代码403 Accounts.changePassword(oldPassword,
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
仅在方法希望返回描述性错误时抛出,而不是在非法调用方法时抛出
用户界面代码应确保除非用户登录,否则不会显示更改密码表单。如果您的更改密码表单仅向登录用户显示,那么您不必担心捕获这些未定义的错误。我可以这样做,但它似乎对我上面发布的“捕获所有”代码没有任何帮助,而且它也没有回答有关不一致错误消息的问题?