node.js - expressjs - 未设置响应正文

标签 node.js postgresql express

在下面的 NodeJS API 中,PostgreSQL 数据库插入了多行,然后需要发送一个响应主体。由于有多种情况可能会出现错误,因此我需要使用消息代码设置响应正文,以帮助识别可能的原因。因此,我使用了一个 resp 对象,它将保存消息代码的 code 键。此对象将在状态为 200(成功)或 500(错误)的 HTTP 响应中发送。

但是,我一直收到一个空的响应正文。变量作用域可以吗?

router.post('/', function (req, res, next) {
  rdbmsPool.connect((err, client, release) => {
    if (err) {
      var resp = {
        'Request-Id' : req.get('X-Request-Id'),
        'code' : 'code'
      }
      res.status(500)
      res.send(resp)
    } else {
      var resp = {}
      for (k in someArray) {

          client.query(queryString, colValues, (err, result) => {
            if (err) {
              resp = {
                'Request-Id' : req.get('X-Request-Id'),
                'code' : 'code'
              }
              res.status(500)
            } else {
              resp = {
                'Request-Id' : req.get('X-Request-Id'),
                'code' : 'code'
              }
              res.status(200)       
            }
          })
        }
      for (k in someOtherArray) {
          client.query(queryString, colValues, (err, result) => {
            if (err) {
              resp = {
                'Request-Id' : req.get('X-Request-Id'),
                'code' : 'code'
              }
              res.status(500)
            } else {
              resp = {
                'Request-Id' : req.get('X-Request-Id'),
                'code' : 'code'
              }
              res.status(200)       
            }
          })
        }
    release()
    res.send(resp)        
    }
  })
});

最佳答案

尝试这样的事情

let array1 = [];
for(k in someArray){
    array1.push(client.query(queryString, colValues));
}

let array2 = [];

for (k in someOtherArray) {
    array2.push(client.query(queryString, colValues));
}

try{
    const results1 = await Promise.all(array1);
    const results2 = await Promise.all(array2);
    // if it comes here queries are successful
}
catch(error){
    //send 500 here. any query have failed
    console.log(error);
}

关于node.js - expressjs - 未设置响应正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52799971/

相关文章:

node.js - Mongoose 模型 update() 与 save()

postgresql - 如何在不授予额外权限的情况下允许用户在 Postgresql 中调用存储过程?

postgresql - 如何将文件名传递给 Heroku pg :sql command?

node.js - Express redis session 存储停止在新机器上工作

javascript - 在 react/redux 应用程序(代理)中隐藏 api url

node.js - npm 启动 Microsoft JScript 运行时错误 800A138F 预期对象

mysql - Node.js 服务器是否应该与 mysql 实例有一个连接?

javascript - C 指针相当于 JavaScript 中的登录

sql - 如何在单个查询中使用 count ,'like' 和 group by?

javascript - 节流、多个客户端请求、Node js 中的 Express 线程