mongodb nodejs每个vs toArray

The*_*xon 4 node.js express node-mongodb-native

我已经快速浏览了一下并没有发现任何让我满意的答案,但基本上我已经开始使用带有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);
                });
            });
        }
    );
});
Run Code Online (Sandbox Code Playgroud)

现在我已经注意到有一个.each函数而不是.toArray我想要使​​用的.count函数,因为我可以删除函数,但显然你只能返回一次响应.我想知道你们是否可以用你们的一些mongo知识来启发我.

properties.find(searchParams).each(function (err, result) {
    return res.json(result);
});
Run Code Online (Sandbox Code Playgroud)

这样的东西,削减了6行代码和额外的数据库调用.

Ben*_*Ben 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);
   });
Run Code Online (Sandbox Code Playgroud)