mysql - 如何在 Node.js 中发送多个响应

标签 mysql node.js

如何在 Node js 中发送多个响应?在此代码中,我想发送 datadata1

function(req, res){
    var classValue = req.query.classID;

    var sql = "SELECT * FROM class WHERE `class_name` ='"+classValue+"'";
      connection.query(sql, function(err, data){
          if(data.length){
              var sql1 = "SELECT * FROM book WHERE `class_id` ='"+data[0].class_id+"'";
              connection.query(sql1, function(err, data1){
                  res.status(200).send(data1);
                  res.status(200).send(data);
              });
          }
      });
  }

最佳答案

调用send将结束连接,因此您只能调用一次。您可以像这样轻松地以 JSON 形式发回复杂的结构:

res.json( { data, data1 } );

请注意,您有一个 data.length 可能为零的路径,但仍需要处理。您可能会考虑这样的事情:

function(req, res, next){
    var classValue = req.query.classID;
  var sql = "SELECT * FROM class WHERE `class_name` ='" + classValue + "'";
  connection.query(sql, function(err, data) {
    if (err) return next(err);   // <-- handle errors
    if (data.length) {
      var sql1 = "SELECT * FROM book WHERE `class_id` ='" + data[0].class_id + "'";
      connection.query(sql1, function(err, data1) {
        if (err) return next(err);   // <-- handle errors
        res.json( { data, data1 } );
      });
    }
    else {
      res.json( {data: null, data1: null} ); // or treat it as an error?
    }
  });
}

如果第一个查询没有给出结果是一个错误条件,那么您可以将其视为错误。请注意,我还使用 next 函数添加了错误处理(假设您使用的是 Express 路由)。

关于mysql - 如何在 Node.js 中发送多个响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59823004/

相关文章:

javascript - 删除断开 socket.io 上的对象

php - 从表中获取值... PHP/MySQL

php - 为什么 mysql 将 bool 转换为 tinyint(1) 而不是它应该是 bool 到 mysql 表

mysql - WHERE子句导致Mysql查询语法错误

java - Flyway 检查数据库是否存在并在 Java 中建立基线

javascript - 使用 Node 创建 id_rsa 文件时格式无效

linux - 无法在端口 80 上运行 Node 服务器

node.js - 如何在 NodeJS 中的循环内发出 HTTP 请求

javascript - 使用某些过滤器 MongoDB 检索 n 个随机文档

java.lang.ClassCastException : java. lang.String 无法转换为 java.util.Date