Node.js:使用response.write()显示MongoDB结果,何时执行response.end()

时间:2014-12-06 10:35:46

标签: node.js

我正在使用Node.js编写一个简单的应用程序。我没有使用框架(了解它是如何在“较低”级别工作)。

我正在尝试做什么:

当GET请求发送到'/ list'时,我使用MongoDB连接来执行find()。然后我想迭代每个返回的项目,并使用response.write(“

”+ myItem)显示它们。

问题是我需要在最后执行response.end(),并且我不知道“结束”的时间 - 因为我的所有response.write()语句都是使用回调执行的。

这是我的代码:

db.items.find({state: "free"}, function(err, myItems) {
        if (err) {
            console.log("There was an error executing the database query.");
            response.end();
            return;
        }
        else if (myItems){
            myItems.forEach( function(myItem) {
                    res.write("<p>" + myItem.title + "</p>\n");
            });
        }
    res.write("</div>");
    res.end();
}

我觉得我错过了一种在这里使用回调的惯用方法......解决这个问题的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是正确的方法,你的end()将在你的回调结束时被调用,所以在你的foreach循环之后,该函数将继续并发送end()方法。 或许我错过了你的问题。但我认为不是。