请选择 进入手机版 | 继续访问电脑版

左一

银牌会员

224

主题

516

帖子

2260

积分

银牌会员

积分
2260

[处理中] 数组取值的问题

左一
银牌会员   /  发表于:2026-1-6 17:20  /   查看:75  /  回复:4
1金币
本帖最后由 左一 于 2026-1-6 17:30 编辑
  1. [{"ID":null},{"level":"双皮奶"},{"major":"22"},{"register_no":null},{"register_unit":null},{"register_date":null},{"register_expiry":null},{"continue_edu_date":null},{"continue_edu_hours":null},{"practice_range":null},{"seal_no":null},{"is_transferable":null},{"certificate_id":null}]
复制代码

怎么把里面的ID、level等属性的值都取出来?

4 个回复

qqqqnnnn
金牌服务用户   /  发表于:2026-1-7 09:44:08
沙发







最后的值想要处理成什么形式的,可以自己处理,这里最后返回了一个一维数组

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
左一
银牌会员   /  发表于:2026-1-7 11:39:36
板凳
我本来是想做主子表添加更新的,但主子表不在同一个页面上,我就想把子页面上的所有值都提取出来,但提取出来后在服务端命令中操作太麻烦了,还是用ai生成javascript命令香,直接生成子表的sql命令进行添加修改。
  1. // 活字格专用:根据ID判断生成INSERT或UPDATE语句
  2. function generateSQLForForguncy() {
  3.   try {
  4.     // 1. 从活字格变量获取输入值
  5.     const biaomin = Forguncy.CommandHelper.getVariableValue("biaomin");
  6.     const shuruzhi = Forguncy.CommandHelper.getVariableValue("shuruzhi");
  7.     const id = Forguncy.CommandHelper.getVariableValue("id"); // 新增:ID变量
  8.    
  9.     // 验证输入
  10.     if (!biaomin || typeof biaomin !== 'string') {
  11.       throw new Error("表名变量 'biaomin' 必须是字符串");
  12.     }
  13.    
  14.     if (!Array.isArray(shuruzhi)) {
  15.       throw new Error("输入数据变量 'shuruzhi' 必须是数组");
  16.     }
  17.    
  18.     // 2. 处理数据
  19.     const fields = [];
  20.     const values = [];
  21.     const rawValues = [];
  22.     const setClauses = []; // 用于UPDATE语句
  23.    
  24.     shuruzhi.forEach(item => {
  25.       // 每个对象只有一个键值对
  26.       const key = Object.keys(item)[0];
  27.       const value = item[key];
  28.       
  29.       fields.push(key);
  30.       rawValues.push(value);
  31.       
  32.       // 处理SQL值格式
  33.       let formattedValue;
  34.       if (value === null) {
  35.         formattedValue = 'null';
  36.       } else if (typeof value === 'number') {
  37.         formattedValue = value;
  38.       } else if (typeof value === 'string') {
  39.         // 转义单引号,防止SQL注入
  40.         const escapedValue = value.replace(/'/g, "''");
  41.         formattedValue = `'${escapedValue}'`;
  42.       } else if (typeof value === 'boolean') {
  43.         formattedValue = value ? '1' : '0';
  44.       } else {
  45.         formattedValue = `'${JSON.stringify(value)}'`;
  46.       }
  47.       
  48.       values.push(formattedValue);
  49.       setClauses.push(`${key} = ${formattedValue}`); // 为UPDATE准备
  50.     });
  51.    
  52.     // 3. 根据id判断生成INSERT或UPDATE语句
  53.     let sql;
  54.     let sqlType;
  55.    
  56.     // 判断id是否为空(null、undefined、空字符串都视为空)
  57.     const isEmptyId = id === null || id === undefined || id === '' || String(id).trim() === '';
  58.    
  59.     if (isEmptyId) {
  60.       // id为空,生成INSERT语句
  61.       sql = `INSERT INTO ${biaomin} (${fields.join(',')}) VALUES (${values.join(',')});`;
  62.       sqlType = "INSERT";
  63.     } else {
  64.       // id不为空,生成UPDATE语句
  65.       // 注意:这里假设id是证书ID,使用certificate_id作为条件
  66.       sql = `UPDATE ${biaomin} SET ${setClauses.join(', ')} WHERE certificate_id = '${id}';`;
  67.       sqlType = "UPDATE";
  68.     }
  69.    
  70.     // 4. 将结果保存到活字格变量
  71.     Forguncy.CommandHelper.setVariableValue("sql", sql);
  72.     Forguncy.CommandHelper.setVariableValue("sqlType", sqlType);
  73.     Forguncy.CommandHelper.setVariableValue("fieldList", `(${fields.join(',')})`);
  74.     Forguncy.CommandHelper.setVariableValue("valueList", `(${values.join(',')})`);
  75.    
  76.     // 5. 返回成功信息
  77.     return {
  78.       success: true,
  79.       message: `SQL(${sqlType})生成成功`,
  80.       sql: sql,
  81.       type: sqlType
  82.     };
  83.    
  84.   } catch (error) {
  85.     // 错误处理
  86.     console.error("生成SQL时出错:", error.message);
  87.    
  88.     // 将错误信息保存到变量
  89.     Forguncy.CommandHelper.setVariableValue("sql", "");
  90.     Forguncy.CommandHelper.setVariableValue("sqlType", "ERROR");
  91.     Forguncy.CommandHelper.setVariableValue("error", error.message);
  92.    
  93.     return {
  94.       success: false,
  95.       message: error.message
  96.     };
  97.   }
  98. }

  99. // 在活字格中调用
  100. generateSQLForForguncy();
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +50 收起 理由
Shawn.Liu + 50 赞一个!

查看全部评分

回复 使用道具 举报
qqqqnnnn
金牌服务用户   /  发表于:2026-1-7 11:53:25
地板
其实在主表页面也写服务端命令也能操作子表页面的表格,只不过手写表格名和列名就行了,是根据表名去获取数据的
回复 使用道具 举报
Shawn.Liu活字格认证
超级版主   /  发表于:2026-1-7 17:12:28
5#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部