Updating multiple rows with node-mysql, NodeJS and Q

前端 未结 5 896
-上瘾入骨i
-上瘾入骨i 2020-12-16 22:44

I am using node-mysql, node-js, and Q promises.

I have successfully updated, deleted, and inserted single rows using the above. As well as inserted multiple rows in

5条回答
  •  猫巷女王i
    2020-12-16 23:16

    this piece of code was taken from vcl.js for node.js, it is written in typescript and provides a multiple update,delete,inseer statment's in a single transaction.

    export class SQLStatment {
        sql: string;
        params: Object
    }
    
    var dbError: string;
    var execCount: number = 0;
    function DBexecuteBatchMYSQLSingle(connection: any, SQLStatmentArray: Array, index: number, callback: () => void) {
        execCount++;
        connection.query(SQLStatmentArray[index].sql, SQLStatmentArray[index].params, function (err, rows, fields) {
            if (err) dbError = err;
            if (index + 1 == SQLStatmentArray.length) callback();
            else {
                if (!dbError) {
                    DBexecuteBatchMYSQLSingle(connection, SQLStatmentArray, index + 1, function () {
                        if (index == 0) callback();
                    });
                }
            }
        });
    }
    
    function DBBatchUpdateMYSQL(SQLStatmentArray: Array, callback?: (err) => void) {
        var mysql = require('mysql');
        var connection = mysql.createConnection({
            host: "host",user: "user",database: "db",
            port: 1022, password: "pass"});
        dbError = null;
        execCount = 0;
        connection.beginTransaction(function (err) {
            if (err && callback) callback("Database error:" + err);
            else {
                DBexecuteBatchMYSQLSingle(connection, SQLStatmentArray, 0, () => {
                    if (dbError) {
                        connection.rollback(function () {
                            if (callback) callback("Database error:" + dbError);
                        });
                    } else {
                        connection.commit(function (err) {
                            if (callback) callback(null);
                        })
                    }
                });
            }
        });
    }
    

提交回复
热议问题