如何解决如何使用 2 参数路由获取 node.js
router.get('/',function (request,response) {
Result.find(function(error,results){
if (error) console.log(error)
response.render('index',{results:results})
})
})
router.get('/',response) {
Result.count({stuff:"book"},function(error,count){
if(error) console.log(error)
response.render('index',{count})
})
})
我试图组合成这样,但出现错误
router.get('/',response,next) {
Result.find(function(error,{results:results})
}),Result.count( {stuff:"book"},{count})
})
})
#注意: 如果我使用其中一个运行完美(没有错误),但我需要 2 个参数..
解决方法
要将这两段数据发送到您的模板,您必须在一个路由处理程序中收集这两段数据,然后使用这两条数据调用一次 res.render()
。
对于传入的请求,您只能发送一个响应,因此,如果您想使用多条数据呈现模板,则需要收集所有数据并调用一次 res.render()
,将所需的所有数据传递给它并且您的模板应该配置为期望所有数据一次传递给它:
// use database callbacks and nest the two calls
router.get('/',function(request,response,next) {
Result.find(function(error,results) {
if (error) {
console.log(error)
response.sendStatus(500);
return;
}
Result.count({ stuff: "book" },function(error,count) {
if (error) {
console.log(error)
response.sendStatus(500);
return;
}
response.render('index',{ count,results });
});
});
});
或者,在你的数据库上使用 promise 接口(我认为它有):
// using Promises and Promise.all() to run both queries in parallel
router.get('/',next) {
Promise.all([Result.find(),Result.count({ stuff: "book" })]).then(([results,count]) => {
response.render('index',results });
}).catch(err => {
console.log(error);
response.sendStatus(500);
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。