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

Merge pull request #5212 from weseek/fix/apiv3-get-page

fix: /_api/v3/page with pageId param occurs an 500 error (for 4.5.x)
Yuki Takei 4 лет назад
Родитель
Сommit
0b0278ff74
2 измененных файлов с 8 добавлено и 5 удалено
  1. 1 1
      packages/app/src/server/routes/apiv3/page.js
  2. 7 4
      packages/app/src/server/service/page.js

+ 1 - 1
packages/app/src/server/routes/apiv3/page.js

@@ -242,7 +242,7 @@ module.exports = (crowi) => {
     const { pageId, path } = req.query;
     const { pageId, path } = req.query;
 
 
     if (pageId == null && path == null) {
     if (pageId == null && path == null) {
-      return res.apiv3Err(new ErrorV3('Parameter pagePath or pageId is required.', 'invalid-request'));
+      return res.apiv3Err(new ErrorV3('Parameter path or pageId is required.', 'invalid-request'));
     }
     }
 
 
     let result = {};
     let result = {};

+ 7 - 4
packages/app/src/server/service/page.js

@@ -120,21 +120,24 @@ class PageService {
 
 
     const Page = this.crowi.model('Page');
     const Page = this.crowi.model('Page');
 
 
+    let pagePath = path;
+
     let page;
     let page;
     if (pageId != null) { // prioritized
     if (pageId != null) { // prioritized
       page = await Page.findByIdAndViewer(pageId, user);
       page = await Page.findByIdAndViewer(pageId, user);
+      pagePath = page.path;
     }
     }
     else {
     else {
-      page = await Page.findByPathAndViewer(path, user);
+      page = await Page.findByPathAndViewer(pagePath, user);
     }
     }
 
 
     const result = {};
     const result = {};
 
 
     if (page == null) {
     if (page == null) {
-      const isExist = await Page.count({ $or: [{ _id: pageId }, { path }] }) > 0;
+      const isExist = await Page.count({ $or: [{ _id: pageId }, { path: pagePath }] }) > 0;
       result.isForbidden = isExist;
       result.isForbidden = isExist;
       result.isNotFound = !isExist;
       result.isNotFound = !isExist;
-      result.isCreatable = isCreatablePage(path);
+      result.isCreatable = isCreatablePage(pagePath);
       result.isDeletable = false;
       result.isDeletable = false;
       result.canDeleteCompletely = false;
       result.canDeleteCompletely = false;
       result.page = page;
       result.page = page;
@@ -146,7 +149,7 @@ class PageService {
     result.isForbidden = false;
     result.isForbidden = false;
     result.isNotFound = false;
     result.isNotFound = false;
     result.isCreatable = false;
     result.isCreatable = false;
-    result.isDeletable = isDeletablePage(path);
+    result.isDeletable = isDeletablePage(pagePath);
     result.isDeleted = page.isDeleted();
     result.isDeleted = page.isDeleted();
     result.canDeleteCompletely = user != null && this.canDeleteCompletely(page.creator, user);
     result.canDeleteCompletely = user != null && this.canDeleteCompletely(page.creator, user);