Node.js 具有mongodb find的函数不返回结果
在Swig模板中调用函数时,我试图返回Mongo结果。它不等待mongo结果并继续呈现模板 示例代码:Node.js 具有mongodb find的函数不返回结果,node.js,mongodb,swig-template,Node.js,Mongodb,Swig Template,在Swig模板中调用函数时,我试图返回Mongo结果。它不等待mongo结果并继续呈现模板 示例代码: function swigfunction(){ db.collection('contentitems').find({}).toArray(function(err, docs) { //generated my output return myoutput; }); } 然后我尝试调用该函数,但返回“undefined” {{ swigfunction
function swigfunction(){
db.collection('contentitems').find({}).toArray(function(err, docs) {
//generated my output
return myoutput;
});
}
然后我尝试调用该函数,但返回“undefined”
{{ swigfunction() }}
请帮助MongoDB API使用异步回调机制。这意味着在数据库处理您的请求时,程序将继续运行,而不仅仅是闲置和浪费资源。当来自数据库的响应最终到达时,回调函数
返回myoutput代码>被执行
node.js中的常见模式是嵌套所有异步函数调用,并将输出写入最内层的回调函数。您可以使用sync mongo db客户端库 我认为您需要先学习javascript的基础知识。看看“scope”是如何工作的,然后谷歌“callback”,这可能是您在这里最不需要的:)谢谢,我理解这一点,但是在Swig.js中,当响应从数据库到达时,Swig已经呈现了模板。我需要阻止渲染,它应该先等待数据库的响应。然后我恐怕你不明白-该函数调用不会包含myoutput
-它不像PHP或其他同步语言那样工作。如果return
不会将任何内容返回到swigFunction
,它会将其值返回到作为find()
回调调用的匿名函数。正如Philipp所说,您需要了解这些函数是如何工作的。