【发布时间】:2019-08-12 23:57:07
【问题描述】:
在特殊情况下,我需要一个小部件,它具有基于 3rd 方 API 响应的附加字段。现在,问题是我必须等待 API 请求给出响应,并且 beforeConstruct 也变得异步,结果是构造函数填充运行并比 beforeConstruct 更早终止,并且在管理面板中,新字段不是可见。
const request = require( 'request-promise' );
module.exports = {
extend: 'apostrophe-widgets',
label: 'Widget name',
beforeConstruct: async function( self, options )
{
var fields = [];
var arrangements = [];
var optionalFields =
{
name: 'optionalFields',
label: 'Optional Fields',
fields: []
};
const apiResponse = await request( {
method: 'POST',
body: {
// criteria for search
},
uri: API_ENDPOINT,
json: true
} );
var newField =
{
name: apiResponse.fieldName,
label: apiResponse.fieldName,
type: 'string',
};
fields.push( contact );
optionalFields.fields.push( apiResponse.fieldName );
arrangements.push( optionalFields );
options.addFields = fields.concat( options.addFields || [] );
options.arrangeFields = arrangements.concat( options.arrangeFields || [] );
}
};
你有什么想法如何等待 beforeConstruct 完成吗?
还有一个问题(写在这里,因为基本上是同一个问题):如果我必须基于数据库片段类型集合向小部件添加新字段:
await self.apos.docs.getManager( 'optionals' ).find( req, {}, { trash: false } ).toArray();
我可以以某种方式同步地从数据库中获取值吗?
【问题讨论】:
标签: apostrophe-cms