我无法使用node.js将mongodb查询的结果发送到客户端。
这是我在server.js文件中的示例代码。
if(filePath == '/getstringjson') {/* if random json string requested then */
/* mongodb get user emails */
MongoClient.connect(mongodb_url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").findOne({}, function(err, result) {
if (err) throw err;
console.log(result);
console.log(result.name);
db.close();
});
});
/* send request to client */
response.writeHead(200, {'Content-Type': mimeTypes[".txt"]});
response.end('weird');/* send random string */
}
这是在我的客户端。
function get_first_user_json() {
xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', $base_url+'getstringjson', true);
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
result = xmlhttp.responseText;
alert(result);
console.log(result);
console.log('can we actually write to the console though?');
}
}
xmlhttp.send();
}
此代码可以正常工作。但是,当我将发送请求放入MongoClient.connect时,它将停止将请求发送到客户端。这是无效的代码。
if(filePath == '/getstringjson') {/* if random json string requested then */
/* mongodb get user emails */
MongoClient.connect(mongodb_url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").findOne({}, function(err, result) {
if (err) throw err;
console.log(result);
console.log(result.name);
/* send request to client */
response.writeHead(200, {'Content-Type': mimeTypes[".txt"]});
response.end('weird');/* send random string */
db.close();
});
});
}
为什么仅当'response.WriteHead'和'response.end()'在MongoClient.connect()函数之外时才起作用?如何完成将mongodb结果发送到客户端?