Nocobase 动态下拉值 基于sql查询结果

0 阅读1分钟
  1. 选择对应需要配置的字段,添加 "事件流" ,选择 "执行javascript"

image.png

  1. 添加代码, 修改第一段的为自己想要结果的sql即可
// 查询 sql 结果作为下拉选项, label作为展示值, value作为传输值
const sqlQuery = `
  SELECT 
    COLUMN_NAME AS value,
    COLUMN_NAME AS label
  FROM 
    information_schema.COLUMNS
`;

// 执行 SQL,获取字段选项列表
const result = await ctx.sql.run(sqlQuery, { type: 'selectRows' });


// 获取当前字段的 UI 配置
const collectionField = await ctx.getVar('ctx.collectionField');


// 将查询结果注入为枚举选项
collectionField.uiSchema.enum = result;

// 启用搜索功能,按 label 过滤
collectionField.uiSchema['x-component-props'] = {
  ...collectionField.uiSchema['x-component-props'],
  showSearch: true,
  optionFilterProp: 'label'
};