【发布时间】:2026-02-11 00:20:11
【问题描述】:
我使用以下非常基本的脚本创建服务器:
var http = require('http');
var queryResult = '';
const PORT=8080;
function handleRequest(request, response){
fetchResult("user1"); //string is a placeholder, but works for now
setTimeout(function() {
// **POSSIBLE SOLUTION SPOT A**
response.end("some text");
}, 1000);
}
var server = http.createServer(handleRequest);
server.listen(PORT, function(){});
我将其分解只是因为我认为它更易于阅读。但在同一页面上,我还有以下内容:
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/my_database_name';
function fetchResult(query){
MongoClient.connect(url, function (err, db) {
if (!err) {
var collection = db.collection('users');
collection.find({name: query}).toArray(function (err, result) {
if (result.length)
queryResult = result;
// **POSSIBLE SOLUTION SPOT B**
db.close();
});
}
});
}
这行得通。结果是一个具有我数据库中的值的对象。当有人提出请求时,服务器能够编写“一些文本”。但是,当用户提出请求时,我无法将对象写入页面或以其他方式传输。最好的方法是什么?
注意事项: 1)我知道在这里使用超时是非常糟糕的。我无法弄清楚如何使回调正常工作,并且对于这个例子来说它工作得很好。解决上述问题后,我将解决我自己的问题。
2) 我认为 JSON.stringify() 可能在其中发挥了作用,但我不知道如何处理它。
3) 我还不想使用任何其他模块(如 express)。我正在尝试了解如何仅使用 http 模块来实现预期的结果。
【问题讨论】:
标签: javascript json node.js mongodb