我的问题是2人:
我有一个显示表单的express.js
文件。表单需要从db中提取2个不同的查询。一个用于创建选择下拉列表,另一个用于创建复选框。如何从node.js文件向同一页面发送2个(或更多)不相关的查询?
因为我正在使用
app.post('/results',urlencodedParser,function(req, res) {
该页面被重定向到localhost:3000/results
。然后git显示没有这样的页面(即使我的results.ejs
文件夹中有一个名为views
的页面。我做错了什么?
答案 0 :(得分:0)
我无法回答你的第二个问题没有更多信息(但坦率地说,无论如何它应该是一个单独的问题)。
关于第一个问题,有几种方法可以给那只猫上皮。我自己,我决定重用。创建select和复选框组的列表是在其他地方使用,还是仅在此页面上使用?
如果只是在这个页面上,我可能会使用类似async
库的parallel()
函数或Promise.all
之类的东西来运行这两个查询并以这种方式返回结果集。
如果它将被重用,我将它们打包为中间件,然后将结果附加到请求或req.locals对象。
异步版本看起来像这样:
const async = require('async');
// later, in your handler
app.get('/results', function(req,res){
async.parallel({
checkboxes : checkboxQueryFn,
selectList : selectListQueryFn
}, (e, bothQueries) => {
// if either query errored, you'll get an 'e' object here, otherwise bothQueries will be an object where bothQueries.checkboxes will have the results of that query and bothQueries.selectList will have the results of that one.
});
});