node.js:expressjs与mongoose

我正在做我的第一个node.js / express / mongoose应用程序,并且由于node.js的asynchronous机制,我正面临一个问题。 看来我不正确地做这件事…

这里是我使用express定义的testing路线:

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'types的logging列表。

上面的代码工作正常,但是当涉及到将整个列表返回给客户端…它不起作用(注释res.send行),只返回第一个logging。

我对node.js非常陌生,所以我不知道在app.get的第一个callback函数中embedded多个callback函数是否是一个好的解决scheme。 我怎么能把整个清单归还?

任何想法 ?

你应该做的是:

 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,发送函数是express和扩展的serverResponse对象的节点(我的坏)的一部分。

但是我的答案仍然适用,express的send函数使用ServerResponse.end()发送数据,所以socket的getclosures,你不能再发送数据,使用write函数使用本地函数。

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