Node.js将mongodb输出到html页面

时间:2018-10-23 10:07:54

标签: node.js mongodb

我尝试结合两个示例代码,一个示例使用节点js显示html文件,另一个示例使用节点js访问数据库。当我尝试组合这些代码时,无法实现将数据库查询显示到HTML页面的目标。

这是我的代码:

var http = require('http');

var fs = require('fs');

// Database
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});

res.write('<br><h1>Hello World!</h1>');
res.write('<br><h2>Access Database</h2>');

var dbresult='1. test \n';

MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    //if (err) throw err;
    if (err) {
        console.error('There was an error connecting to mongodb', err);
    }

    var dbo = db.db("testdb");

    // findone()

    dbo.collection("products").findOne({}, function(err, result) {
        //if (err) throw err;
        if (err) {
            console.error('Error calling findOne()', err);
        }
        //res.write("\n1. ");
        //res.write(result.name);
        console.log("\n1. ");
        console.log(result.name);
        dbresult += result.name;
        res.write(dbresult);
        db.close();
    });   
});

//res.write(dbresult);

res.end();
/*fs.readFile('demofile1.html', function(err, data) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    res.end();
  });*/
}).listen(8080); 

如果将res.write()放在Mongoclient.connect()控制台中,则会显示“错误[ERR_STREAM_WRITE_AFTER_END]:结束后写入”。

如果将res.write()放在Mongoclient.connect()之后,则不会显示任何数据。我已经尝试过使用console.log,没问题。

我的代码有什么问题?谢谢...

0 个答案:

没有答案