我正在使用meteor js开发一个应用程序。我创建了一个用于创建用户的流星方法。它告诉我以下错误: -
尚未在服务器上支持回调的Accounts.createUser。
这是我的流星方法
如何在account.createUser中添加回调?
Meteor.startup(function () {
Meteor.methods({
postForm:function(doc){
var result = Accounts.createUser({
username: doc.username,
password: doc.password,
email: doc.emails,
profile: {
lastname: doc.lastname,
contact:doc.phoneNumber,
bdat:doc.bod,
address:doc.address
}
},function(){
console.log('hello');
});
}
});
});
答案 0 :(得分:7)
"然而"在该错误消息中可能是作者的错误。根据{{3}}:
在服务器上,[
NSManagedObject
]返回新创建的用户ID。
这意味着在服务器端,Accounts.createUser
本质上是阻塞的:它等待创建用户,然后返回其新生成的id。所以"回调",在这种情况下,基本上是跟随你的Accounts.createUser
声明的任何内容。您将获得一个值,即用户的_id,您可以使用该值来检索具有createUser
的插入用户。如果你想覆盖错误,你可以捕获抛出的异常。
但正如David Weldon所说,你基本上可以在客户端上使用Meteor.users.find()
进行回调,这需要回调。我想如果你想在"回调"中做一些特定于服务器的事情是有意义的。那个创作,但也有人可能会说你可以为此做一个服务器方法调用。 (虽然在这种情况下会调用服务器两次,一次用于创建,一次用于回调逻辑)
答案 1 :(得分:5)
我收到了完全相同的错误消息,包括“尚未”字样。我的完整错误消息:Exception while invoking method Error: Accounts.createUser with callback not supported on the server yet.
将该错误消息翻译为
嘿,开发人员,你这个大假人,你的方法调用不能同时处理这两个问题 响应和错误通过回调,但。请修改您的代码。
对我来说这个问题有两个问题。和你一样,我没有充分考虑回调错误和响应。这意味着,如果调用链中的其他地方出现错误,该错误将不会传递给您,因此您不知道出了什么问题。首先修复回调代码。
Meteor.methods({
postForm:function(doc){
try {
var result = Accounts.createUser({
username: doc.username,
password: doc.password,
email: doc.emails,
profile: {
lastname: doc.lastname,
contact:doc.phoneNumber,
bdat:doc.bod,
address:doc.address
}
});
if(result){
// are you using roles?
// Roles.addUsersToRoles(result, doc.roles);
return result;
}
}
catch(err){
return err;
}
}
});
希望这会“修复”callback not supported
错误消息。那时你应该能够看到真正引起麻烦的是什么。在我的情况下,这是一个错误的Accounts.validateNewUser((user)
例程,我从教程中复制并忘记更新以匹配我的数据。
哦,差点忘了......这是从客户端调用方法的示例代码。
Meteor.call('postForm', newUser, function(error, response) {
if (error) {
console.log('postForm: Error: ', error);
}
if (response) {
console.log('postForm: Response: ', response);
}
});
祝你好运。这里提供的信息,以防任何人收到“尚未”错误!