You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js处理表单undefined值仅插入有效值到SQL的实现方法

实现方案
  • 第一步:过滤dates对象中的undefined值
    可以通过遍历键值对的方式筛选出所有有效选中项,示例代码如下:
    // 原dates定义保持不变
    var dates = {
        monday: req.body.monday,
        tuesday: req.body.tuesday,
        wednesday: req.body.wednesday,
        thursday: req.body.thursday,
        friday: req.body.friday,
        saturday: req.body.saturday,
        sunday: req.body.sunday
    }
    // 过滤出值不为undefined的有效项
    const validDateEntries = Object.entries(dates).filter(([weekDay, value]) => value !== undefined)
    // 可根据业务需求选择存储格式:
    // 选项1:存储为JSON字符串,后续读取解析最方便
    const finalDates = JSON.stringify(Object.fromEntries(validDateEntries))
    // 选项2:存储为选中的星期名称逗号分隔字符串,例如 "monday,sunday"
    // const finalDates = validDateEntries.map(([weekDay]) => weekDay).join(',')
    // 选项3:存储为选中的对应值逗号分隔字符串,例如 "2,1"
    // const finalDates = validDateEntries.map(([_, value]) => value).join(',')
    
  • 第二步:优化SQL写法,避免SQL注入风险
    你当前直接拼接字符串生成SQL的写法存在严重的SQL注入漏洞,必须替换为参数化查询,示例(以mysql驱动为例):
    const addclient = "insert into clients (NAME, EMAIL, PHONE_NUMBER, TRAINER_NAME, HOUR, MINUTE, DATES) values (?, ?, ?, ?, ?, ?, ?)";
    // 执行查询时传入参数数组,驱动会自动处理转义
    connection.query(addclient, [name, email, phonenumber, req.session.username, hour, minute, finalDates], (err, result) => {
      if (err) {
        console.error('插入失败', err)
        return
      }
      // 插入成功后续逻辑
    })
    

内容的提问来源于stack exchange,提问作者developerg1000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:54:01