|
13 | 13 | import DateStore from '@seald-io/nedb' |
14 | 14 | import { getDatabasePath, getResponseData } from '../tool/Common' |
15 | 15 |
|
| 16 | +const parsePageContent = (item) => { |
| 17 | + if (item && item.page_content && typeof item.page_content === 'string') { |
| 18 | + try { |
| 19 | + item.page_content = JSON.parse(item.page_content) |
| 20 | + } catch (e) { |
| 21 | + // ignore |
| 22 | + } |
| 23 | + } |
| 24 | + return item |
| 25 | +} |
| 26 | + |
16 | 27 | export default class PageService { |
17 | 28 | constructor() { |
18 | 29 | this.db = new DateStore({ |
@@ -68,32 +79,45 @@ export default class PageService { |
68 | 79 | async create(params) { |
69 | 80 | const model = params.isPage ? this.pageModel : this.folderModel |
70 | 81 | const pageData = { ...model, ...params } |
| 82 | + |
| 83 | + if (pageData.page_content && typeof pageData.page_content === 'object') { |
| 84 | + pageData.page_content = JSON.stringify(pageData.page_content) |
| 85 | + } |
| 86 | + |
71 | 87 | const result = await this.db.insertAsync(pageData) |
72 | 88 | const { _id } = result |
73 | 89 | await this.db.updateAsync({ _id }, { $set: { id: _id } }) |
74 | 90 | result.id = result._id |
75 | | - return getResponseData(result) |
| 91 | + return getResponseData(parsePageContent(result)) |
76 | 92 | } |
77 | 93 |
|
78 | 94 | async update(id, params) { |
79 | | - await this.db.updateAsync({ _id: id }, { $set: params }) |
| 95 | + const updateData = { ...params } |
| 96 | + if (updateData.page_content && typeof updateData.page_content === 'object') { |
| 97 | + updateData.page_content = JSON.stringify(updateData.page_content) |
| 98 | + } |
| 99 | + |
| 100 | + await this.db.updateAsync({ _id: id }, { $set: updateData }) |
80 | 101 | const result = await this.db.findOneAsync({ _id: id }) |
81 | | - return getResponseData(result) |
| 102 | + return getResponseData(parsePageContent(result)) |
82 | 103 | } |
83 | 104 |
|
84 | 105 | async list(appId) { |
85 | 106 | const result = await this.db.findAsync({ app: appId.toString() }) |
| 107 | + if (Array.isArray(result)) { |
| 108 | + result.forEach(parsePageContent) |
| 109 | + } |
86 | 110 | return getResponseData(result) |
87 | 111 | } |
88 | 112 |
|
89 | 113 | async detail(pageId) { |
90 | 114 | const result = await this.db.findOneAsync({ _id: pageId }) |
91 | | - return getResponseData(result) |
| 115 | + return getResponseData(parsePageContent(result)) |
92 | 116 | } |
93 | 117 |
|
94 | 118 | async delete(pageId) { |
95 | 119 | const result = await this.db.findOneAsync({ _id: pageId }) |
96 | 120 | await this.db.removeAsync({ _id: pageId }) |
97 | | - return getResponseData(result) |
| 121 | + return getResponseData(parsePageContent(result)) |
98 | 122 | } |
99 | 123 | } |
0 commit comments