gpt4 book ai didi

mongodb - node.js: 带有 Mongoose 的 expressjs

转载 作者:IT老高 更新时间:2023-10-28 13:26:22 27 4
gpt4 key购买 nike

我正在开发我的第一个 node.js/express/mongoose 应用程序,由于 node.js 的异步机制,我遇到了一个问题。看来我没有正确地做这件事......

这是我使用 express 定义的测试路线:

app.get('/test', function(req, res){
var mod = mongoose.model('MyModel');
mod.find({},function(err, records){
records.forEach(function(record){
console.log('Record found:' + record.id);
// res.send('Thing retrieved:' + record.id);
});
});
});

当我发出 http://localhost/test ,我想在响应中获取“MyModel”类型的记录列表。

上面的代码运行良好,但是在将整个列表返回给客户端时......它不起作用(注释的 res.send 行)并且只返回了第一条记录。

我对 node.js 很陌生,所以我不知道在 app.get 的第一个回调函数中嵌入几个回调函数是否是一个好的解决方案。我怎样才能返回整个列表?

有什么想法吗?

最佳答案

你应该做的是:

mod.find({},function(err, records){
res.writeHead(200, {'Content-Length': body.length});
records.forEach(function(record){
res.write('Thing retrieved:' + record.id);
});
});

请务必同时查看文档:

http://nodejs.org/docs/v0.3.8/api/http.html#response.write

我错过了你在使用 express,send 函数是 express 的一部分,并且扩展了 node 的 serverResponse 对象(我的错)。

但我的回答仍然适用,express 的发送函数使用 ServerResponse.end() 发送数据所以socket get已经关闭,你不能再发送数据了,使用write函数使用native函数。

您可能还想在请求完全完成时调用 res.end(),因为 express 中的某些项目可能会受到影响

关于mongodb - node.js: 带有 Mongoose 的 expressjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com