Node.js 节点js中的异步不工作
我试图运行两个不同的mongoose查询,并在同一个ejs页面中显示结果。我搜索了很多,最后找到了异步方法。下面是我是如何尝试的 js文件 }))Node.js 节点js中的异步不工作,node.js,express,mongoose,Node.js,Express,Mongoose,我试图运行两个不同的mongoose查询,并在同一个ejs页面中显示结果。我搜索了很多,最后找到了异步方法。下面是我是如何尝试的 js文件 })) 但当我刷新“/CreateSurvey”页面时,它不会呈现。我已经下载了async模块,并且在我的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
的相关文档。