Как вставить запись, если она не существует, и обновить, если она существует (upsert), используя node js mysql? - PullRequest
0 голосов
/ 04 мая 2020

Это мой запрос вставки, и теперь я хочу, чтобы он изменил его, используя метод UPSERT , чтобы проверить, существует ли повторная запись, а затем обновите, если не существует вставки. Вот моя часть вставки.

jsonObj = JSON.parse(jsonData);

if (jsonObj.hasOwnProperty("PE")) {
    msgId = parseInt(jsonObj["PE"]);

    if (msgId == XEPT_EVENT_ID) {
        var pe = jsonObj["PE"];
        var uid = jsonObj["UID"];
        var mac = jsonObj["MAC"];
        var time = jsonObj["TIM"];

        var records = jsonObj["Record"];
        var digital_input = [];
        records.forEach(rec => {
            digital_input.push(rec[3]);
        });

        if (typeof con !== 'undefined' && con) {
            con.connect();
            var sql = "INSERT INTO  sierra_ips.iot_output_log (device_code,  device_id, last_updated_time, digital_input_0, digital_input_1, digital_input_2, digital_input_3, digital_input_4, digital_input_5, digital_input_6, digital_input_7)VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
            con.query(sql, [uid, mac, time, digital_input[0], digital_input[1], digital_input[2], digital_input[3], digital_input[4], digital_input[5], digital_input[6], digital_input[7]], 
                function (err, result) {
                    if (err) throw err;
                    console.log("Record inserted");
                }
            );
        }
    }
}

1 Ответ

1 голос
/ 04 мая 2020

Я получил ответ, используя этот способ,

var mysql = require('mysql');
const upsert = require('mysql-upsert');

 const table = 'table name'
 const data = [
   { col_name: 'value' }]#your data with collumns

var con = mysql.createConnection({
 host: "",
  user: "",
  password: "b",
  database: ""#config db connection
});

const { affectedRows } = upsert(con)(table, data)
con.end()

Вот ссылка ссылка = [https://www.npmjs.com/package/mysql-upsert] [1]

...