gpt4 book ai didi

mysql - 从 db 获取简单信息到 node.js http 服务器响应

转载 作者:搜寻专家 更新时间:2023-11-01 00:26:56 25 4
gpt4 key购买 nike

我正在尝试从 db 获取一个简单的信息到 node.js http 服务器响应中。在以下代码片段中,我可以在系统日志中看到数据库结果,但在 http 响应中看不到。

你能告诉我一些关于为什么会发生这种情况的想法吗?

谢谢。

var
sys = require( 'sys' )
, http = require( 'http' )
, dbParams = {
user : 'test'
, pass : 'test'
, db : 'just_test'
}
;

function dbConnect() {
var Client = require( 'mysql' ).Client
, client = new Client()
;

client.user = dbParams.user;
client.password = dbParams.pass;
client.connect();
client.query('USE ' + dbParams.db);

return( client );
}

var dbClient = dbConnect();

http.createServer( function( httpRequest, httpResponse ) {
httpResponse.writeHead( 200, { 'Content-Type' : 'text/plain' } );
httpResponse.write( '=== START httpResponse' + "\n" );

dbClient.query( 'SELECT * FROM base_events', function (err, dbRes, fields) {
if (err) { throw err; }

httpResponse.write( 'Obtained: ' + JSON.stringify( dbRes ) );
sys.log( 'FROM DB: ' + JSON.stringify( dbRes ) );
} );

httpResponse.write( '=== Test' + "\n" );
httpResponse.end();

dbClient.end();
} ).listen( 8000 );

sys.puts( 'Server running at http://127.0.0.1:8000' );

最佳答案

client.query 的异步回调在您结束 httpResponse 后被调用。尝试将最后几条语句移到该回调中 - 例如:

http.createServer( function( httpRequest, httpResponse ) {
httpResponse.writeHead( 200, { 'Content-Type' : 'text/plain' } );
httpResponse.write( '=== START httpResponse' + "\n" );

dbClient.query( 'SELECT * FROM base_events', function (err, dbRes, fields) {
if (err) { throw err; }

httpResponse.write( 'Obtained: ' + JSON.stringify( dbRes ) );
sys.log( 'FROM DB: ' + JSON.stringify( dbRes ) );

httpResponse.write( '=== Test' + "\n" );
httpResponse.end();

dbClient.end();

} );

} ).listen( 8000 );

关于mysql - 从 db 获取简单信息到 node.js http 服务器响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6081117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com