Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js sync/async回调是否从数据库返回值?_Node.js_Express - Fatal编程技术网

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

Node.js sync/async回调是否从数据库返回值?,node.js,express,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 connec

我非常抱歉发布这个问题,因为我肯定答案就在那里,但我就是找不到我想要的答案

问题是,如果您向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!
  });
});
我想我的问题是,我应该通过修改上面的示例来解决这个问题,还是通过编辑实际Web服务器的设置方式来解决这个问题


我使用的是一个简单的httpserver,也许express.js可以解决这个问题?

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

将响应作为对您的查询的回调,这会让您认为DB连接已经关闭?谢谢Daniel,所以也许我只需要将当前范围传递到数据库查询,以便在那里附加响应?正如Anders所说,它应该按照发布的方式工作。只要您在现场创建要传递的函数,它将是闭包的一部分,并且可以访问响应。另一方面,如果在调用.get()的外部定义要传递的函数,则需要传递响应。