我正在使用Meteor,我正在尝试从外部数据库检索数据(neo4j用于该情况)。
我的问题是当我Meteor.call()
从客户端到服务器时,我需要在服务器函数中有一个return
语句。但是从数据库中检索数据本身就是异步的。
这是我所拥有的最新内容:
client.js:
Template.test.created = function () {
Meteor.call('getData', id, function (error, response) {
if (response) {
console.log(response); //<-- reponse = "???"
}
});
}
server.js:
Meteor.methods({
"getData": function (id) {
neo.commit ( //<-- async function which expect a callback
id,
function(error, response) {
console.log(response); //<-- only here I have the response I want but now I cant "return" it.
return response;
}
);
return "???"; //<-- the actual return that is being send back
}
});
有什么想法吗?
答案 0 :(得分:2)
您可以使用var jsList = new Array();
<c:forEach items="${javaList}" var="javaLvar" varStatus="status">
objJs = new Object();
objJs.someProperty = ${javaLvar};
jsList.push(objJs);
</c:forEach>
来解决问题,将代码更改为(可能需要进行更多更改,具体取决于您的代码库):
Future
您可以在以下链接中阅读有关Meteor异步模式的更多信息:
Meteor Patterns: Call an asynchronous function and use its returned value
随意询问您是否需要进一步的帮助。