Node.js sync / async回调是否从数据库返回一个值?

时间:2014-03-13 11:59:11

标签: node.js express

我为发布这个问题而道歉,因为我确定答案已经存在,但我根本无法找到我正在寻找的答案。

问题是,如果您向node.js服务器发出HTTP请求 - 如何保持连接打开以便数据库可以返回某些内容?

考虑以下代码;

app.get("/myRequest", function (req, response) {
  database.query('SELECT * FROM table', function(err, rows) {
    // Cannot return rows because the connection will have already been closed
    response.JSON(rows); // Doh!
  });
});

我想我的问题是,我是否应该通过调整上述示例或通过编辑实际网络服务器的设置方式来解决这个问题?

我使用简单的http服务器,也许express.js可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

为节点服务器编写路由处理程序时,在发送响应之前,连接不会关闭。因此,如果您等待数据库查询返回后才会响应,那么客户端的连接仍然会在那里等待您的响应。节点的重点是它可以并行而不是串行处理多个同时连接。