fix: serialize page_content to resolve mockserver create page error (#1780)

This commit is contained in:
Hexqi 2026-03-06 11:07:32 +08:00 committed by GitHub
parent 8caa5aab8e
commit 8319cbfabe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 29 additions and 5 deletions

View File

@ -13,6 +13,17 @@
import DateStore from '@seald-io/nedb'
import { getDatabasePath, getResponseData } from '../tool/Common'
const parsePageContent = (item) => {
if (item && item.page_content && typeof item.page_content === 'string') {
try {
item.page_content = JSON.parse(item.page_content)
} catch (e) {
// ignore
}
}
return item
}
export default class PageService {
constructor() {
this.db = new DateStore({
@ -68,32 +79,45 @@ export default class PageService {
async create(params) {
const model = params.isPage ? this.pageModel : this.folderModel
const pageData = { ...model, ...params }
if (pageData.page_content && typeof pageData.page_content === 'object') {
pageData.page_content = JSON.stringify(pageData.page_content)
}
const result = await this.db.insertAsync(pageData)
const { _id } = result
await this.db.updateAsync({ _id }, { $set: { id: _id } })
result.id = result._id
return getResponseData(result)
return getResponseData(parsePageContent(result))
}
async update(id, params) {
await this.db.updateAsync({ _id: id }, { $set: params })
const updateData = { ...params }
if (updateData.page_content && typeof updateData.page_content === 'object') {
updateData.page_content = JSON.stringify(updateData.page_content)
}
await this.db.updateAsync({ _id: id }, { $set: updateData })
const result = await this.db.findOneAsync({ _id: id })
return getResponseData(result)
return getResponseData(parsePageContent(result))
}
async list(appId) {
const result = await this.db.findAsync({ app: appId.toString() })
if (Array.isArray(result)) {
result.forEach(parsePageContent)
}
return getResponseData(result)
}
async detail(pageId) {
const result = await this.db.findOneAsync({ _id: pageId })
return getResponseData(result)
return getResponseData(parsePageContent(result))
}
async delete(pageId) {
const result = await this.db.findOneAsync({ _id: pageId })
await this.db.removeAsync({ _id: pageId })
return getResponseData(result)
return getResponseData(parsePageContent(result))
}
}