Просмотр исходного кода

Fix: like and seenUsers cannot update

Sotaro KARASAWA 10 лет назад
Родитель
Сommit
346fc9b833
2 измененных файлов с 41 добавлено и 61 удалено
  1. 40 60
      lib/models/page.js
  2. 1 1
      lib/routes/page.js

+ 40 - 60
lib/models/page.js

@@ -91,13 +91,13 @@ module.exports = function(crowi) {
 
 
   pageSchema.methods.isLiked = function(userData) {
   pageSchema.methods.isLiked = function(userData) {
     if (undefined === this.populated('liker')) {
     if (undefined === this.populated('liker')) {
-      if (this.liker.indexOf(userData._id) != -1) {
+      if (this.liker.indexOf(userData._id.toString()) != -1) {
         return true;
         return true;
       }
       }
       return true;
       return true;
     } else {
     } else {
       return this.liker.some(function(likedUser) {
       return this.liker.some(function(likedUser) {
-        return likedUser._id.toString() == userData._id.toString();
+        return likedUser._id.equals(userData._id);
       });
       });
     }
     }
   };
   };
@@ -106,26 +106,15 @@ module.exports = function(crowi) {
     var self = this,
     var self = this,
       Page = self;
       Page = self;
 
 
-    if (undefined === this.populated('liker')) {
-      var added = this.liker.addToSet(userData._id);
-      if (added.length > 0) {
-        this.save(function(err, data) {
-          debug('liker updated!', added);
-          return callback(err, data);
-        });
-      } else {
-        debug('liker not updated');
-        return callback(null, this);
-      }
+    var added = this.liker.addToSet(userData._id);
+    if (added.length > 0) {
+      this.save(function(err, data) {
+        debug('liker updated!', added);
+        return callback(err, data);
+      });
     } else {
     } else {
-      Page.update(
-        {_id: self._id},
-        { $addToSet: { liker:  userData._id }},
-        function(err, numAffected, raw) {
-          debug('Updated liker,', err, numAffected, raw);
-          callback(null, self);
-        }
-      );
+      debug('liker not updated');
+      return callback(null, this);
     }
     }
   };
   };
 
 
@@ -133,54 +122,45 @@ module.exports = function(crowi) {
     var self = this,
     var self = this,
       Page = self;
       Page = self;
 
 
-    if (undefined === this.populated('liker')) {
-      var removed = this.liker.pull(userData._id);
-      if (removed.length > 0) {
-        this.save(function(err, data) {
-          debug('unlike updated!', removed);
-          return callback(err, data);
-        });
-      } else {
-        debug('unlike not updated');
-        callback(null, this);
-      }
+    var removed = this.liker.pull(userData._id);
+    if (removed.length > 0) {
+      this.save(function(err, data) {
+        debug('unlike updated!', removed);
+        return callback(err, data);
+      });
     } else {
     } else {
-      Page.update(
-        {_id: self._id},
-        { $pull: { liker:  userData._id }},
-        function(err, numAffected, raw) {
-          debug('Updated liker (unlike)', err, numAffected, raw);
-          callback(null, self);
-        }
-      );
+      debug('unlike not updated');
+      callback(null, this);
     }
     }
   };
   };
 
 
+  pageSchema.methods.isSeenUser = function(userData) {
+    var self = this,
+      Page = self;
+
+    return this.seenUsers.some(function(seenUser) {
+      return seenUser._id.equals(userData._id);
+    });
+  };
+
   pageSchema.methods.seen = function(userData, callback) {
   pageSchema.methods.seen = function(userData, callback) {
     var self = this,
     var self = this,
       Page = self;
       Page = self;
 
 
-    if (undefined === this.populated('seenUsers')) {
-      var added = this.seenUsers.addToSet(userData._id);
-      if (added.length > 0) {
-        this.save(function(err, data) {
-          debug('seenUsers updated!', added);
-          return callback(err, data);
-        });
-      } else {
-        debug('seenUsers not updated');
-        return callback(null, this);
-      }
-    } else {
-      Page.update(
-        {_id: self._id},
-        { $addToSet: { seenUsers:  userData._id }},
-        function(err, numAffected, raw) {
-          debug('Updated seenUsers,', err, numAffected, raw);
-          callback(null, self);
-        }
-      );
+    if (!userData || !userData._id) {
+      callback(new Error('User data is not valid'), null);
+    }
+
+    if (this.isSeenUser(userData)) {
+      debug('seenUsers not updated');
+      return callback(null, self);
     }
     }
+
+    var added = self.seenUsers.addToSet(userData);
+    this.save(function(err, data) {
+      debug('seenUsers updated!', added);
+      return callback(err, self);
+    });
   };
   };
 
 
   pageSchema.statics.getGrantLabels = function() {
   pageSchema.statics.getGrantLabels = function() {

+ 1 - 1
lib/routes/page.js

@@ -107,7 +107,7 @@ module.exports = function(crowi, app) {
         res.redirect(encodeURI(path));
         res.redirect(encodeURI(path));
         return ;
         return ;
       }
       }
-      debug('Page found', pageData);
+      debug('Page found', pageData._id, pageData.path);
 
 
       if (err == Page.PAGE_GRANT_ERROR) {
       if (err == Page.PAGE_GRANT_ERROR) {
         debug('PAGE_GRANT_ERROR');
         debug('PAGE_GRANT_ERROR');