diff --git a/packages/builder/src/builderStore/dataBinding.js b/packages/builder/src/builderStore/dataBinding.js index ee1e62d4ef..ab7ca2cc7d 100644 --- a/packages/builder/src/builderStore/dataBinding.js +++ b/packages/builder/src/builderStore/dataBinding.js @@ -213,6 +213,21 @@ const getProviderContextBindings = (asset, dataProviders) => { schema = info.schema table = info.table + // Check for any JSON fields so we can add any top level properties + let jsonAdditions = {} + Object.keys(schema).forEach(fieldKey => { + const fieldSchema = schema[fieldKey] + if (fieldSchema.type === "json") { + const jsonSchema = convertJSONSchemaToTableSchema(fieldSchema, true) + Object.keys(jsonSchema).forEach(jsonKey => { + jsonAdditions[`${fieldKey}.${jsonKey}`] = { + type: jsonSchema[jsonKey].type, + } + }) + } + }) + schema = { ...schema, ...jsonAdditions } + // For JSON arrays, use the array name as the readable prefix. // Otherwise use the table name if (datasource.type === "jsonarray") {