fix: sync view details

This commit is contained in:
chenos 2021-05-08 11:39:39 +08:00
parent 91d633deed
commit 6b7e26fb90

View File

@ -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);