From 6b7e26fb90a8821c55ee3390fd0697ab208c7e50 Mon Sep 17 00:00:00 2001 From: chenos Date: Sat, 8 May 2021 11:39:39 +0800 Subject: [PATCH] fix: sync view details --- packages/plugin-pages/src/server.ts | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/packages/plugin-pages/src/server.ts b/packages/plugin-pages/src/server.ts index 7d486ac91..c2f2b02be 100644 --- a/packages/plugin-pages/src/server.ts +++ b/packages/plugin-pages/src/server.ts @@ -114,6 +114,37 @@ export default async function (options = {}) { } }); + resourcer.use(async (ctx, next) => { + await next(); + const { actionName, resourceName } = ctx.action.params; + if (actionName === 'get' && resourceName === 'views_v2') { + // console.log('ctx.body', ctx.body) + const View = database.getModel('views_v2'); + const view = ctx.body; + const details = view.get(`options.x-${view.type}-props.details`) || []; + for (const detail of details) { + if (!(detail.view && detail.view.id)) { + continue; + } + const detailView = await View.findOne(View.parseApiJson({ + filter: { + id: detail.view.id, + }, + fields: { + appends: ['collection', 'targetField', 'targetView'], + }, + })); + if (!detailView) { + continue; + } + detail.view = detailView; + } + if (details.length) { + view.set(`options.x-${view.type}-props.details`, details); + } + } + }); + resourcer.registerActionHandler('getCollection', getCollection); resourcer.registerActionHandler('getView', getView); resourcer.registerActionHandler('getPageInfo', getPageInfo);