我尝试结合两个示例代码,一个示例使用节点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,没问题。
我的代码有什么问题?谢谢...