Răsfoiți Sursa

modified from FB

白石誠 5 ani în urmă
părinte
comite
f1a395d8d2
2 a modificat fișierele cu 22 adăugiri și 15 ștergeri
  1. 5 7
      src/client/js/services/PageContainer.js
  2. 17 8
      src/server/routes/apiv3/page.js

+ 5 - 7
src/client/js/services/PageContainer.js

@@ -164,13 +164,11 @@ export default class PageContainer extends Container {
 
 
   async retrieveLikeInfo() {
   async retrieveLikeInfo() {
     const like = await this.appContainer.apiv3Get('/page/like-info', { _id: this.state.pageId });
     const like = await this.appContainer.apiv3Get('/page/like-info', { _id: this.state.pageId });
-    if (like.data.sumOfLikers && like.data.users.liker && like.data.isLiked) {
-      this.setState({
-        sumOfLikers: like.data.sumOfLikers,
-        likerUsers: like.data.users.liker,
-        isLiked: like.data.isLiked,
-      });
-    }
+    this.setState({
+      sumOfLikers: like.data.sumOfLikers,
+      likerUsers: like.data.users.liker,
+      isLiked: like.data.isLiked,
+    });
   }
   }
 
 
   async toggleLike() {
   async toggleLike() {

+ 17 - 8
src/server/routes/apiv3/page.js

@@ -202,16 +202,25 @@ module.exports = (crowi) => {
   });
   });
 
 
   router.get('/like-info', loginRequired, validator.likeInfo, apiV3FormValidator, async(req, res) => {
   router.get('/like-info', loginRequired, validator.likeInfo, apiV3FormValidator, async(req, res) => {
-    // guest user return nothing
-    if (!req.user) {
-      return res.apiv3({ });
-    }
     const pageId = req.query._id;
     const pageId = req.query._id;
-    const userId = req.user._id;
+    let users;
+    let sumOfLikers;
+    let page;
+    try {
+      page = await Page.findById(pageId);
+      users = await Page.findById(pageId).populate('liker', User.USER_PUBLIC_FIELDS);
+      sumOfLikers = page.liker.length;
+    }
+    catch (err) {
+      logger.error('error like info ', err);
+      return res.apiv3Err(err, 500);
+    }
     try {
     try {
-      const page = await Page.findById(pageId);
-      const users = await Page.findById(pageId).populate('liker', User.USER_PUBLIC_FIELDS);
-      const sumOfLikers = page.liker.length;
+      // guest user return nothing
+      if (!req.user) {
+        return res.apiv3({ users, sumOfLikers });
+      }
+      const userId = req.user._id;
       const isLiked = page.liker.includes(userId);
       const isLiked = page.liker.includes(userId);
 
 
       return res.apiv3({ users, sumOfLikers, isLiked });
       return res.apiv3({ users, sumOfLikers, isLiked });