From 8319cbfabe6049cb829d25b671e890b5411c3ffb Mon Sep 17 00:00:00 2001 From: Hexqi Date: Fri, 6 Mar 2026 11:07:32 +0800 Subject: [PATCH] fix: serialize page_content to resolve mockserver create page error (#1780) --- mockServer/src/services/pages.js | 34 +++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/mockServer/src/services/pages.js b/mockServer/src/services/pages.js index c4d40e68..31a739ff 100644 --- a/mockServer/src/services/pages.js +++ b/mockServer/src/services/pages.js @@ -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)) } }