如何在单个 GET 请求中创建多个查询
How to create multiple queries in a single GET request
我正在使用 node-pg
并希望在单个 GET
请求中进行多个查询。
例如,假设我做了两个这样的查询:
const getSomeInfo = (request, response) => {
pool.query('SELECT * FROM jobs', (error, results) => {
if (error) {
throw error
}
var jobObj = results.rows;
response.render('pages/jobinfo', {
jobObj: jobObj
});
})
pool.query('SELECT * FROM description INNER JOIN views', (error, results) => {
if (error) {
throw error
}
var descObj = results.rows;
response.render('pages/jobinfo', {
descObj: descObj
});
})
}
此代码导致以下错误 Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
。
有没有办法在同一个 GET
请求中进行这两个查询,以便可以在同一页面上使用包含结果的对象?
您只能呈现 一个 文档,但这可以包含 两个 个局部变量,每个查询一个。要并行执行查询,请使用 Promise.all
并利用 pool.query
没有回调函数 returns 承诺的事实。
const getSomeInfo = (request, response) => {
Promise.all([
pool.query('SELECT * FROM jobs'),
pool.query('SELECT * FROM description INNER JOIN views')
]).then(function([jobResults, descResults]) {
response.render('pages/jobinfo', {
jobObj: jobResults.rows,
descObj: descResults.rows
});
}, function(error) {
throw error;
});
}
我正在使用 node-pg
并希望在单个 GET
请求中进行多个查询。
例如,假设我做了两个这样的查询:
const getSomeInfo = (request, response) => {
pool.query('SELECT * FROM jobs', (error, results) => {
if (error) {
throw error
}
var jobObj = results.rows;
response.render('pages/jobinfo', {
jobObj: jobObj
});
})
pool.query('SELECT * FROM description INNER JOIN views', (error, results) => {
if (error) {
throw error
}
var descObj = results.rows;
response.render('pages/jobinfo', {
descObj: descObj
});
})
}
此代码导致以下错误 Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
。
有没有办法在同一个 GET
请求中进行这两个查询,以便可以在同一页面上使用包含结果的对象?
您只能呈现 一个 文档,但这可以包含 两个 个局部变量,每个查询一个。要并行执行查询,请使用 Promise.all
并利用 pool.query
没有回调函数 returns 承诺的事实。
const getSomeInfo = (request, response) => {
Promise.all([
pool.query('SELECT * FROM jobs'),
pool.query('SELECT * FROM description INNER JOIN views')
]).then(function([jobResults, descResults]) {
response.render('pages/jobinfo', {
jobObj: jobResults.rows,
descObj: descResults.rows
});
}, function(error) {
throw error;
});
}