Node.js 具有mongodb find的函数不返回结果

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

在Swig模板中调用函数时,我试图返回Mongo结果。它不等待mongo结果并继续呈现模板

示例代码:

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所说,您需要了解这些函数是如何工作的。