【问题标题】:only insert variables which have values, not undefined node.js仅插入具有值的变量,而不是未定义的 node.js
【发布时间】:2021-11-01 17:22:13
【问题描述】:

所以我有这个:

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
}

    console.log(Object.values(dates))

其工作方式是您可以在前端选择一个复选框,无论您是否选中它,所有结果都将发送到后端。现在,我需要对这些结果进行排序,只插入那些被选中的结果(它们没有定义的值,比如下面的数组响应)。

在 for 循环结果集中,i 是这样返回的:

    [
  '2',       undefined,
  undefined, undefined,
  undefined, undefined,
  '1'
    ]

如您所见,5/7 未定义。所以我有一个标准的插入查询到 SQL,但我只需要插入定义的值。 所以在我的脑海里,我在想insert into clients where Object.values(dates) != undefined,但我知道那是不对的,尤其是因为现在sql 查询的工作方式就是这样,哈哈。

我有这个:

var addclient = "insert into clients (NAME, EMAIL, PHONE_NUMBER, TRAINER_NAME, HOUR, MINUTE, DATES) values ('" + name + "', '" + email + "', '" + phonenumber + "', '" + req.session.username + "', '" + hour + "', '" + minute + "', '" + dates + "')";

我该怎么做?

【问题讨论】:

  • 您希望数据库中的字符串将“日期”转换成什么?
  • 不清楚您要做什么,例如数据库中DATES 的类型是什么?从您提出的查询中可以假设它是 JSON。查询是否循环执行?
  • @Digglit 刚刚更新以解释更多。
  • @developerg1000 目前还不清楚您希望数据库中的最终结果是什么样的。您能发布一个字符串将显示为的示例吗?
  • 如果您希望您的数组只包含未定义的值,只需将它们过滤掉即可。 console.log(Object.values(dates).filter(el=> !!el))

标签: javascript sql node.js db2


【解决方案1】:

除了实际问题之外,使用未经处理的输入以在 sn-p 中显示的方式创建 sql 字符串是一个巨大的风险。它允许攻击者执行 sql 注入。在此处查看更多信息:https://owasp.org/www-community/attacks/SQL_Injection

【讨论】:

    【解决方案2】:

    如果您希望将值作为逗号分隔的字符串插入,您可以通过执行以下操作来实现:

    const formattedString = Object.values(dates).filter(el => el).join(', ');
    var addclient = "insert into clients (NAME, EMAIL, PHONE_NUMBER, TRAINER_NAME, HOUR, MINUTE, DATES) values ('" + name + "', '" + email + "', '" + phonenumber + "', '" + req.session.username + "', '" + hour + "', '" + minute + "', '" + formattedString + "')";
    

    请注意,我将插入方法中的“日期”更改为新的“格式化字符串”。鉴于您的示例,formattedString 将是“2, 1”。

    【讨论】:

      猜你喜欢
      • 2017-01-17
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 2018-12-20
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      相关资源
      最近更新 更多