http.createServer(function(request, response) {
console.log("New request :"+request.url);
var found = false;
for(var i= 0; i < requests.length; i++){
match = requests[i];
if(match.method == request.method && request.url.match(match.regexp))
{
console.log("Matched request: "+match.url);
pg.connect(databaseUrl, function(error, client) {
if(error)
processError(response, error);
else
match.action(client, request, response);
});
found = true;
break;
}
}
if(!found)
processError(response, "Request url does not exist: "+request.url);
}).listen(3000);
sys.puts("Server running... waiting for requests");
大家好。我坚持使用这段代码。每当我调用相同请求11次时,nodejs停止响应,甚至不记录“新请求:”+ request.url。 任何人都知道发生了什么事?
非常感谢。
答案 0 :(得分:2)
抱歉迟到了。 我发现问题是什么,但不完全理解。 在连接循环中,我使用的函数实际上只是模拟值(通常由请求捕获)。这是问题所在。如果您没有在pg.connect中发出任何数据库请求并在其上循环,则似乎连接未正确关闭。所以连接池显然会中断。 希望我已经足够清楚了。
无论如何,谢谢你的帮助。
答案 1 :(得分:0)
我认为问题是for循环中的异步调用“pg.connect”。 试试这个js模块async