[英]response.write not working in embedded function on nodejs
I seem to have a problem which seems to elude me entirely. 我似乎有一个问题,似乎使我完全无法解决。 My current node config is:
我当前的节点配置是:
var url = require('url');
var mongoClient = require('mongodb').MongoClient;
var server = require('http').createServer(function(request,response) {
switch (url.parse(request.url).pathname) {
case '/mongotest':
mongoClient.connect('mongodb://localhost:27017', function(err,db) {
if(!err) console.log('Connection successful!');
response.writeHead(200, {'Content-Type':'text/plain'});
response.write('Text to output to browser');
});
break;
case default:
response.writeHead(200, {'Content-Type':'text/plain'});
response.write('Request for ' + url.parse(request.url).pathname + ' received.');
}
res.end();
});
server.listen(8080);
Everytime I go to /mongotest, the console logs 'Connection successful!', but there doesn't seem to be any output on the browser at all, and neither does the writeHead seem to at all. 每次我进入/ mongotest时,控制台都会记录“连接成功!”,但是浏览器上似乎根本没有任何输出,而writeHead似乎也没有。
Any help? 有什么帮助吗?
Thank you :) 谢谢 :)
Assuming res.end()
is supposed to be response.end()
, you're calling response.end()
before your res.write
calls in the async connect
callback. 假设
res.end()
应该是response.end()
,那么您在异步connect
回调中的res.write
调用之前先调用response.end()
。
You need to move that call into the callback, like this: 您需要将该调用移至回调中,如下所示:
var server = require('http').createServer(function(request,response) {
switch (url.parse(request.url).pathname) {
case '/mongotest':
mongoClient.connect('mongodb://localhost:27017', function(err,db) {
if(!err) console.log('Connection successful!');
response.writeHead(200, {'Content-Type':'text/plain'});
response.write('Text to output to browser');
response.end();
});
break;
case default:
response.writeHead(200, {'Content-Type':'text/plain'});
response.write('Request for ' + url.parse(request.url).pathname + ' received.');
response.end();
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.