我快速浏览了一圈,没有找到令我满意的答案,但基本上我已经开始使用 node.js 和 express 和 mongodb 来创建 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 行代码和对数据库的额外调用。
最佳答案
count() 仍然可以用 toArray() 切掉:
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);
});
关于node.js - mongodb nodejs 每个 vs toArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724552/