Browse Source

Create new method "findRevisions"

Norio Suzuki 10 years ago
parent
commit
7ebaaaf12c
2 changed files with 26 additions and 8 deletions
  1. 22 0
      lib/models/revision.js
  2. 4 8
      lib/routes/revision.js

+ 22 - 0
lib/models/revision.js

@@ -37,6 +37,28 @@ module.exports = function(crowi) {
       });
   };
 
+  revisionSchema.statics.findRevisions = function(ids) {
+    var Revision = this;
+
+    if (!Array.isArray(ids)) {
+      return Promise.reject('The argument was not Array.');
+    }
+
+    return new Promise(function(resolve, reject) {
+      Revision
+        .find({ _id: { $in: ids }})
+        .sort({createdAt: -1})
+        .populate('author')
+        .exec(function(err, revisions) {
+          if (err) {
+            return reject(err);
+          }
+
+          return resolve(revisions);
+        });
+    });
+  };
+
   revisionSchema.statics.findRevisionList = function(path, options) {
     var Revision = this;
 

+ 4 - 8
lib/routes/revision.js

@@ -38,14 +38,10 @@ module.exports = function(crowi, app) {
   actions.api.list = function(req, res) {
     var revisionIds = req.query.revision_ids.split(',');
 
-    var promises = [];
-    revisionIds.forEach(function(id) {
-      promises.push(Revision.findRevision(id));
-    });
-
-    Promise.all(promises)
-      .then(function(results) {
-        return res.json(ApiResponse.success(results));
+    Revision
+      .findRevisions(revisionIds)
+      .then(function(revisions) {
+        return res.json(ApiResponse.success(revisions));
       })
       .catch(function(err) {
         return res.json(ApiResponse.error(err));