meteorjs 获取服务器回调返回的数据
meteorjs get data returned from server callback
在 meteor 中,我试图通过从客户端创建 Meteor.call 来插入新文档。一切正常,除了我想 return 创建文档的 id 给客户端,这样我就可以重定向到正确的 url.
我有类似的东西(客户):
Meteor.call('scenarioCreate', scenarioObj, function(err, response) {
if(err) {
console.warn(err);
return;
}
console.info(response);
});
在服务器上:
Meteor.methods({
'scenarioCreate': function(scenarioObj) {
Scenarios.insert( scenarioObj, function(err, id) {
console.info("new id: "+id);
if (err) {
console.warn(err);
throw new Meteor.Error(404, 'Something went wrong');
}
return id;
});
}
});
从服务器端我得到控制台日志 "new id: DDaq4aWsGf3fxG7RP",但我应该在客户端的“response”值上得到相同的值,但我总是未定义。
任何人都可以向我解释为什么或我做错了什么。
您的第一个错误是您在 insert
的回调中返回了 id
。那没有任何作用。然后你的第二个不知道方法是同步执行的。这意味着您只能使用 Meteor.wrapAsync
回调中可用的信息。但这不是重点。 insert
函数returns新_id
。这意味着你可以这样做:
Meteor.methods({
'scenarioCreate': function(scenarioObj) {
return Scenarios.insert( scenarioObj );
}
});
Meteor.methods
不等你回电。试试这个:
在服务器上:
Meteor.methods({
'scenarioCreate': function(scenarioObj) {
var newId = Scenarios.insert(scenarioObj);
return newId;
}
});
要捕获任何错误,请使用 try/catch
注意:如果您仍想使用回调,请查看 fibers/future
。
在 meteor 中,我试图通过从客户端创建 Meteor.call 来插入新文档。一切正常,除了我想 return 创建文档的 id 给客户端,这样我就可以重定向到正确的 url.
我有类似的东西(客户):
Meteor.call('scenarioCreate', scenarioObj, function(err, response) {
if(err) {
console.warn(err);
return;
}
console.info(response);
});
在服务器上:
Meteor.methods({
'scenarioCreate': function(scenarioObj) {
Scenarios.insert( scenarioObj, function(err, id) {
console.info("new id: "+id);
if (err) {
console.warn(err);
throw new Meteor.Error(404, 'Something went wrong');
}
return id;
});
}
});
从服务器端我得到控制台日志 "new id: DDaq4aWsGf3fxG7RP",但我应该在客户端的“response”值上得到相同的值,但我总是未定义。
任何人都可以向我解释为什么或我做错了什么。
您的第一个错误是您在 insert
的回调中返回了 id
。那没有任何作用。然后你的第二个不知道方法是同步执行的。这意味着您只能使用 Meteor.wrapAsync
回调中可用的信息。但这不是重点。 insert
函数returns新_id
。这意味着你可以这样做:
Meteor.methods({
'scenarioCreate': function(scenarioObj) {
return Scenarios.insert( scenarioObj );
}
});
Meteor.methods
不等你回电。试试这个:
在服务器上:
Meteor.methods({
'scenarioCreate': function(scenarioObj) {
var newId = Scenarios.insert(scenarioObj);
return newId;
}
});
要捕获任何错误,请使用 try/catch
注意:如果您仍想使用回调,请查看 fibers/future
。