为javascript回调函数之外的变量赋值

时间:2018-06-14 07:42:40

标签: javascript node.js mongodb express

我确实在为JavaScript中的回调函数之外的变量赋值时遇到了问题。在下面的代码片段中,我试图从mongodb中的音乐集合中检索文档列表,这需要一个回调,响应/结果驻留在那里,所以我决定在回调中分配temp = response。但是,temp变量仍未定义,因此在渲染模板时我最终会出错。

这是我的代码段:

app.get('/getSongs/', function(req, res) {
    var resp = "";
    var temp = undefined;
    Music.find(function(err, response){
        //res.send(response);
        temp = response;
    });   
    console.log(temp);
    res.render("music_list", {'musics' : temp}) 
});

这是从console.log(temp)返回的响应:

undefined

我尝试了另一种方法,即将temp直接分配给Music.find调用,最后我得到了其他东西,这不是我想要的。该片段如下所示:

app.get('/getSongs/', function(req, res) {
    var resp = "";
    var temp = Music.find(function(err, response){
        //res.send(response);
    });   
    console.log(temp);
    res.render("music_list", {'musics' : temp})
});

并且响应是这样的:

Query {
  _mongooseOptions: {},
  mongooseCollection: 
   NativeCollection {
     collection: Collection { s: [Object] },
     opts: 
      { bufferCommands: true,
....

远远不够..

我需要你的帮助来发现导致我无法完成我想要的错误的错误。我是JavaScript世界的新手(我来自C / C ++)

先谢谢

0 个答案:

没有答案