Node JS Maria DB 批量插入问题

Node JS Maria DB Bulk Insert Issue

我正在尝试在数据库中批量插入产品,它似乎可以正常工作,因为它没有抛出任何错误,但它只是从数组中插入第一个值数组。当我检查 console.log 时,数组 returns 多个数组但只插入一个。知道这是从哪里来的吗?非常感谢!

const pool = mariadb.createPool({
     ...
     multipleStatements: true
});
var conn = pool.getConnection();

var matchedProducts = [];
for (var ptm_i = 0; ptm_i < products_to_match.length; ptm_i++) {

                                value_to_add = products_to_match[ptm_i]['suid'];
                                var final_price = products_to_match[ptm_i]['finalprice']/100;
                                var initial_price = products_to_match[ptm_i]['price']/100;
                                var isOnSale = products_to_match[ptm_i]['onsale'];
                                var sizes = unique_id_sizes[value_to_add].join(',');
                                var store_details = [
                                    products_to_match[ptm_i]['product_id'],
                                    partner_id,
                                    final_price,
                                    initial_price,
                                    isOnSale,
                                    'USD',
                                    sizes,
                                    value_to_add,
                                    products_to_match[ptm_i]['id'],
                                    products_to_match[ptm_i]['url']
                                ];
                                matchedProducts.push(store_details);
                            }       
                            //console.log(matchedProducts);
                            try{                    
                                let matched_query = 'INSERT INTO stores (product_id, partner_id, price, initial_price, is_on_sale, currency, sizes, merchant_code, origin_id, link) VALUES ?';
                                conn.query(matched_query, matchedProducts, (error, result) => {
                                    //console.log(result);
                                });

                            }catch(err){
                                console.log(err)
                                throw err;
                            }
}

我假设您在这里使用 mariadb 连接器。

要按批次插入,您使用:

connection.batch(sql, values) → Promise: fast batch processing.

没有

connection.query(sql[, values]) → Promise: Executes a query.

您可以找到文档 here

这是一个例子:

// https://github.com/mariadb-corporation/mariadb-connector-nodejs/blob/master/documentation/batch.md
connection.beginTransaction();
connection.query("INSERT INTO BASKET(customerId) values (?)", [1], (err, res) => {
  //must handle error if any
  const basketId = res.insertId;
  try {
    connection.batch("INSERT INTO basket_item(basketId, itemId) VALUES (?, ?)",[
        [basketId, 100],
        [basketId, 101],
        [basketId, 103],
        [basketId, 104],
        [basketId, 105]
    ]);
    //must handle error if any
    connection.commit();
  } catch (err) {
    connection.rollback();
    //handle error
  }
});