我快速浏览了一下并没有发现任何让我满意的答案,但基本上我已经开始使用带有express和mongodb的node.js创建一个webapi而不是通常的.Net MVC Web API路由。
我注意到的一件事是,为了回复一系列结果,我会以相当笨重的方式做这件事,或者至少感觉如何。
app.get('/property', function (req, res) {
var propArray = [];
MongoClient.connect(settings.connection,
function (err, db) {
if (err) throw err;
var properties = db.collection("PROPERTIES");
var searchParams = {
Active: true,
Deleted: false
}
properties.count(searchParams, function (err, count) {
properties.find(searchParams).toArray(function (err, result) {
for (i = 0; i < count; i++)
propArray.push(new models.propertyModel(result[i]));
db.close();
return res.json(propArray);
});
});
}
);
});
现在我已经注意到了.each
功能而不是.toArray
我希望使用它,因为我可以删除.count
功能,但显然你只能返回一次回复。我想知道你们是否可以用你的一些mongo知识来启发我。
properties.find(searchParams).each(function (err, result) {
return res.json(result);
});
类似的东西,削减了6行代码和额外的数据库调用。
答案 0 :(得分:6)
仍然可以使用toArray()来删除count():
properties.find(searchParams).toArray(function (err, result) {
var i, count;
for (i = 0, count = result.length; i < count; i++) {
propArray.push(new models.propertyModel(result[i]));
}
db.close();
return res.json(propArray);
});