mysql - 如何使用node js更新mysql中的多行

标签 mysql node.js

我在更新表中的多行时遇到问题。
以下是我的数据

const update_Data = upins_data.map(
                upins_data => [{
                    upin_id: upins_data.upin_id,
                    media_type: upins_data.media_type,
                    land: upins_data.land
                }]
            );

它有多个值。
我厌倦了以下代码

var updateSecTab = `UPDATE tb_bid_upins SET upin_id=?,media_type=?,land=? WHERE bid_id = ?`;
            var query = db.query(updateSecTab,[update_Data,cond],function(error,result,fields){

                if (error) { /**If error while inserting into table 2 it rowback the Transaction */
                    console.log('in err 1');
                    return db.rollback(function () {
                        throw err;
                    });
                }
                db.commit(function (err, result3) {
                    if (err) {
                        console.log('in err 2');
                        return db.rollback(function () {
                            throw err;
                        });
                    }
                    /**Send success result to front end */
                    console.log('success!');
                    res.send(JSON.stringify(result));
                })
            });
            console.log(query.sql);  

当我打印查询时,它给出的结果如下

UPDATE tb_bid_upins SET upin_id=('[object Object]'), ('[object Object]'),media_type=1,land=? WHERE bid_id = ?  

最佳答案

大家好,我已经尝试过以下解决方案并且它有效。

var upins_data = [ { upin_id: 1, media_type: 5, land: 'Rakhiyal Circle' } ],
[ { upin_id: 3, media_type: 6, land: 'Rakhiyal Circle' } ]
var cond = 1

我在单个数组中添加了上面两个变量,如下

const update_Data = upins_data.map(
      upins_data => {
        return {
          bid_id: cond,
          upin_id: upins_data.upin_id,
          media_type: upins_data.media_type,
          land: upins_data.land
        }
      }
    );

我在 update_Data 数组上使用了 foreach,并且使用 mysql foramt 函数创建了多个 sql 查询。

var queries = '';
update_Data.forEach(function (item) {
      let sql = mysql.format("UPDATE tb_bid_upins SET upin_id=?,media_type=?,land=? WHERE bid_id = ? ;", [item.upin_id,item.media_type, item.land, item.bid_id]);
      queries += sql;
      console.log(sql);
    });

我已经在 sql 查询中传递了上面的查询变量,如下

db.query(queries,(err,result)=>{
   if(err){
      console.log('err',err);
    }else{
      console.log('result',result);
    }    
  });

上面的代码适用于我的 nodejs

如果有人想进步,他们就可以做到。 谢谢

关于mysql - 如何使用node js更新mysql中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56816142/

相关文章:

javascript - 比较两个对象数组并将具有匹配值的对象添加到第一个对象数组

node.js - Sails 从另一个 Controller 调用一个 Controller

mysql - 从列值中删除一些文本

php - morphTo 和 hasMany Laravel

php - SQL/PHP : Order by highest vote from different table

node.js - moment.timezone 中的反转区

node.js - 如何从node.js检查RabbitMQ中是否存在交换?

php - 日期不按 laravel 中指定的那样工作

mysql - 简单计数Mysql查询

java - 我想了解 mongodb