简体   繁体   English

response.write在nodejs的嵌入式功能中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM