Node.js 节点js中的异步不工作

Node.js 节点js中的异步不工作,node.js,express,mongoose,Node.js,Express,Mongoose,我试图运行两个不同的mongoose查询,并在同一个ejs页面中显示结果。我搜索了很多,最后找到了异步方法。下面是我是如何尝试的 js文件 })) 但当我刷新“/CreateSurvey”页面时,它不会呈现。我已经下载了async模块,并且在我的js文件中需要它我错在哪里?首先,代码中的类:类和问题:问题行是什么?你想干什么 应在任务内部调用每个任务函数(数组中的函数)的回调参数,以指示每个任务的成功或错误完成 您正在执行实际渲染的可选主回调(代码中的第三个函数),只有在所有任务完成后才会调用

我试图运行两个不同的mongoose查询,并在同一个ejs页面中显示结果。我搜索了很多,最后找到了异步方法。下面是我是如何尝试的

js文件

}))


但当我刷新“/CreateSurvey”页面时,它不会呈现。我已经下载了async模块,并且在我的js文件中需要它我错在哪里?

首先,代码中的
类:类
问题:问题
行是什么?你想干什么

应在任务内部调用每个
任务
函数(数组中的函数)的
回调
参数,以指示每个任务的成功或错误完成

您正在执行实际渲染的可选主
回调
(代码中的第三个函数),只有在所有
任务
完成后才会调用

在代码中,
任务
内未调用回调。因此,最终回调也永远不会被调用。事实上,在您的代码中,只有第一个*任务得到执行,除此之外什么也不会发生


阅读

中有关
async.parallel
的更多信息首先,代码中的
classes:classes
questions:questions
行是什么?你想干什么

应在任务内部调用每个
任务
函数(数组中的函数)的
回调
参数,以指示每个任务的成功或错误完成

您正在执行实际渲染的可选主
回调
(代码中的第三个函数),只有在所有
任务
完成后才会调用

在代码中,
任务
内未调用回调。因此,最终回调也永远不会被调用。事实上,在您的代码中,只有第一个*任务得到执行,除此之外什么也不会发生


阅读有关
async.parallel
的详细信息,在中,代码存在一些问题,您没有调用与
async
调用对应的
callback
。请尝试以下操作:

router.get('/CreateSurvey', function(req, res, next) {
  async.parallel({
    classes: function(callback) {
      QBank.find(function(err, classes, count){
        callback(classes);
      });
    },
    questions: function(callback) {
      QBank.findOne({_id:"H001"},  function (err, questions, count ){     
        callback(questions);
      });
    }
  }, function(err, result) { 
    if (err) return next(err);
    res.render('CreateSurvey', result); // { classes : [c1, c2] , questions : [q1, q2] }
  });
});

代码有一些问题,您没有调用与
async
call对应的
callback
。请尝试以下操作:

router.get('/CreateSurvey', function(req, res, next) {
  async.parallel({
    classes: function(callback) {
      QBank.find(function(err, classes, count){
        callback(classes);
      });
    },
    questions: function(callback) {
      QBank.findOne({_id:"H001"},  function (err, questions, count ){     
        callback(questions);
      });
    }
  }, function(err, result) { 
    if (err) return next(err);
    res.render('CreateSurvey', result); // { classes : [c1, c2] , questions : [q1, q2] }
  });
});

我在ASYNC.PARALLEL中没有发现任何错误。我认为问题出在QBank中为什么要在res.render()中传递它?我在跟踪其他人的工作。我认为“课程”和“问题”将被分配到同一个名称“QBank”。请参阅中的最终答案“我在ASYNC.PARALLEL中没有发现任何错误”。我认为QBank中存在什么问题?为什么要在res.render()中传递它?我正在跟踪其他人的工作。我认为“课程”和“问题”将被分配到同一个名称“QBank”。在我的调查系统中有一个题库,请参见中的最终答案。当用户转到“导入问题”时,我想显示问题类型(类),当用户单击类型时,必须显示该类型内的问题。所以,要在同一个ejs页面中通过javascript隐藏和显示来显示这个,我想将find all和find one发送到同一个ejs页面。那么您在
mongoose
中对
.find()
使用的语法是什么呢?你在一次通话中阅读了数据库中的所有问题?你想这样做吗?你还需要正确的代码语法。请参阅@mukeshharma的回复。我建议您首先阅读
mongoose
async
的相关文档。我的调查系统中有一个题库。当用户转到“导入问题”时,我想显示问题类型(类),当用户单击类型时,必须显示该类型内的问题。所以,要在同一个ejs页面中通过javascript隐藏和显示来显示这个,我想将find all和find one发送到同一个ejs页面。那么您在
mongoose
中对
.find()
使用的语法是什么呢?你在一次通话中阅读了数据库中的所有问题?你想这样做吗?你还需要正确的代码语法。请参阅@mukeshharma的回复。我建议您首先阅读
mongoose
async
的相关文档。