我正在使用: 流星1.8版, accounts-password@1.5.1
调用时:
Meteor.methods({
setPassword(newPassword, userId) {
check(userId, String);
check(newPassword, String);
if(Meteor.user().isAdmin){
Accounts.setPassword(userId, newPassword);
}
},
});
作者
Meteor.call('setPassword', password, this.userId);
我收到此错误:
Exception while simulating the effect of invoking 'setPassword' TypeError: Accounts.setPassword is not a function
但是密码仍然设置...
答案 0 :(得分:1)
流星方法可以在服务器端和客户端(see here)上运行。这里的错误来自客户端:simulating the effect
表示客户端正在尝试计算对服务器查询的乐观答案。
Accounts对象在客户端和服务器端都可用,但是我敢打赌,Accounts.setPassword函数仅出于安全原因在服务器中可用。
为避免此错误,您可以:将流星方法定义放在仅服务器的文件夹see here中(例如在此文件app_code/imports/api/accounts/server/methods.js
中),或用if(Meteor.isServer)
{ {3}}:
if(Meteor.isServer){
Meteor.methods({
setPassword(newPassword, userId) {
check(userId, String);
check(newPassword, String);
if(Meteor.user().isAdmin){
Accounts.setPassword(userId, newPassword);
}
},
});
}