我在Swig模板中调用函数时尝试返回Mongo结果。它不会等待mongo结果并继续呈现模板。
示例代码:
function swigfunction(){
db.collection('contentitems').find({}).toArray(function(err, docs) {
//generated my output
return myoutput;
});
}
然后我尝试调用该函数,但返回“undefined”。
{{ swigfunction() }}
请帮忙
答案 0 :(得分:1)
MongoDB API使用异步回调机制。这意味着程序将在数据库处理您的请求时继续,而不仅仅是空闲和浪费资源。当数据库的响应最终到达时,将执行回调函数return myoutput;
。
node.js中的常用模式是嵌套所有异步函数调用,并在最里面的回调函数中写入输出。
答案 1 :(得分:0)
您可以使用mongo-sync sync mongo-db客户端库。