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中的某些项目可能会受到影响