如何在单个 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;
  });
    
}