0

我正在使用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以便可以在同一页面上使用包含结果的对象?

4

1 回答 1

2

您只能呈现一个文档,但这可以包含两个局部变量,一个来自每个查询。要并行执行查询,请使用并利用没有回调函数返回承诺Promise.all的事实。pool.query

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;
  });
    
}
于 2021-08-16T15:22:43.310 回答