白石誠 5 лет назад
Родитель
Сommit
2b39be18df
2 измененных файлов с 14 добавлено и 7 удалено
  1. 7 5
      src/client/js/services/PageContainer.js
  2. 7 2
      src/server/routes/apiv3/page.js

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

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

+ 7 - 2
src/server/routes/apiv3/page.js

@@ -9,6 +9,7 @@ const router = express.Router();
 
 const ErrorV3 = require('../../models/vo/error-apiv3');
 
+
 /**
  * @swagger
  *  tags:
@@ -200,9 +201,13 @@ module.exports = (crowi) => {
     return res.apiv3({ result });
   });
 
-  router.get('/like-info', loginRequired, validator.likeInfo, 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 userId = req.user ? req.user._id : null;
+    const userId = req.user._id;
     try {
       const page = await Page.findById(pageId);
       const users = await Page.findById(pageId).populate('liker', User.USER_PUBLIC_FIELDS);