【问题标题】:javascript for loop only return the last elementjavascript for 循环只返回最后一个元素
【发布时间】:2018-06-11 01:44:17
【问题描述】:

为什么循环只返回最后一个值?

有人可以帮我获取SQL insert中的所有值返回

tableau.forEach(function(obj) {

    for(let i = 0; i < obj.produits.length; i++) {
        let bd_nom = obj.produits[ii].nom
        let bd_description = obj.produits[ii].description
        let bd_titre = obj.titre

        records = [[bd_nom, bd_description, bd_titre]]

        con.connect(function(err) {
            let sql = "INSERT INTO scrapeded (nom, text, titre) VALUES ?";
            con.query(sql, [records], function (err, result) {
                console.log(result)
                console.log("Nombre de rangée affectée : " + result.affectedRows)
                console.log("Nombre d'enregistrement affectée avec avertissement : " + result.warningCount)
                console.log("Message du serveur mySQL : " + result.message)
            })
         })
      }
  })

【问题讨论】:

    标签: javascript mysql arrays for-loop foreach


    【解决方案1】:

    您在每次迭代时都隐式分配和重新分配给全局变量 records。因此,当异步查询开始时,主线程已经结束,records 仍然是它被分配的最后一个值。

    改为使用const 声明它,以确保每次迭代都有一个新的绑定。

    此外,无需声明一个数组,然后立即对其进行解构以选择第一个元素 - 只需将 records 声明为一个包含两项的一维数组:

    tableau.forEach(function(obj) {
      for(let i = 0; i < obj.produits.length; i++) {
        let bd_nom = obj.produits[ii].nom
        let bd_description = obj.produits[ii].description
        let bd_titre = obj.titre
    
        const records = [bd_nom, bd_description, bd_titre]
    
        con.connect(function(err) {
          let sql = "INSERT INTO scrapeded (nom, text, titre) VALUES ?";
          con.query(sql, records, function (err, result) {
            console.log(result)
            console.log("Nombre de rangée affectée : " + result.affectedRows)
            console.log("Nombre d'enregistrement affectée avec avertissement : " + result.warningCount)
            console.log("Message du serveur mySQL : " + result.message)
          })
        })
      }
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 2017-02-26
      • 1970-01-01
      • 2018-06-05
      相关资源
      最近更新 更多