我尝试在服务器上使用Meteorjs帐户创建新用户,然后向他们发送电子邮件以设置他们的初始密码。这个想法是管理员用户可以添加新用户。
我可以成功添加新用户(如果我记录它,我可以在服务器控制台中看到新用户ID),但该ID永远不会返回给客户端。这是我的服务器端
Meteor.methods({
createNewUser: function(email){
return Accounts.createUser({email: email});
}
});
相关的客户端JS:
if (isNotEmpty(email) && isEmail(email)) {
Meteor.call("createNewUser", email, function(ret){
if (typeof ret.message !== 'undefined') {
if (ret.message === 'Email already exists. [403]') {
alert("exists");
} else {
alert("not created");
}
} else {
Accounts.sendEnrollmentEmail(ret, function(err){
if (err){
alert("email didn't get sent");
} else {
alert('success');
}
});
}
});
}
我在浏览器控制台中看到了这个:
Exception in delivering result of invoking 'createNewUser': TypeError: Cannot read property 'message' of undefined
值得注意的是,我也得到了#34;存在"如果我尝试连续两次提交相同的电子邮件地址,则发出警报,因此错误将返回给客户端。
答案 0 :(得分:2)
回调中的第一个参数始终是错误对象。 如果一切正常,则错误等于null。
Meteor.call('createNewUser', email, function( error, result ){
if( error ){
console.error("ERROR -> ", error )
}else{
console.log("User was created!")
}
})
答案 1 :(得分:1)
但该ID永远不会返回给客户端。
那是因为您在客户端上没有console.log
。流星呼叫看起来也不正确。
if (isNotEmpty(email) && isEmail(email)) {
Meteor.call("createNewUser", email, function(err,result){
if (typeof ret.message !== 'undefined') {
if (ret.message === 'Email already exists. [403]') {
alert("exists");
} else {
console.log(result) //here for example you should get the id
}
} else {
Accounts.sendEnrollmentEmail(ret, function(err){
if (err){
alert("email didn't get sent");
} else {
alert('success');
}
});
}
});
}