{"id":2038,"date":"2022-04-23T23:45:18","date_gmt":"2022-04-23T14:45:18","guid":{"rendered":"https:\/\/blog.wsd.sh\/?p=2038"},"modified":"2022-04-30T20:46:16","modified_gmt":"2022-04-30T11:46:16","slug":"node-jsmariadb-transaction%e7%94%a8%e3%81%aemodule","status":"publish","type":"post","link":"https:\/\/blog.wsd.sh\/?p=2038","title":{"rendered":"<small>Node.js,MariaDB : Module for Transaction<\/small>"},"content":{"rendered":"<p>\uff11\uff0e\u76ee\u7684<br \/>\n\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u8a18\u8ff0\u3067\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u306e\u30cd\u30b9\u30c8\u3092\u30b7\u30f3\u30d7\u30eb\u306b\u3059\u308b<\/p>\n<p>\uff12\uff0ecode<\/p>\n<pre>\r\n\"use script\";\r\n\r\nconst fs = require('fs');\r\nconst mysql = require('mysql');\r\n\r\nconst configStr = fs.readFileSync('config.json').toString();\r\nconst config = JSON.parse(configStr);\r\n\r\nmodule.exports = {\r\n    beginTransaction : _beginTransaction,\r\n    commit          : _commit,\r\n    connection      : _connection,\r\n    delete          : _delete,\r\n    insert          : _insert,\r\n    query           : _query,\r\n    rollback        : _rollback,\r\n    selectOne       : _selectOne,\r\n    selectAll       : _selectAll,\r\n    update          : _update\r\n}\r\n\r\nfunction _beginTransaction(connection) {\r\n    return new Promise((resolve, reject) => {\r\n        connection.beginTransaction((err) => {\r\n            if (err) {\r\n                return reject(err);\r\n            }\r\n            resolve();\r\n        });\r\n    });\r\n}\r\n\r\nfunction _commit (connection) {\r\n    return new Promise((resolve, reject) => {\r\n        connection.commit((err) => {\r\n            if (err) {\r\n                return reject(err);\r\n            }\r\n            resolve();\r\n        });\r\n    });\r\n}\r\n\r\nfunction _connection () {\r\n    return mysql.createConnection(config.DATABASE);\r\n}\r\n\r\nfunction _delete (connection, sql, args) {\r\n    return new Promise ((resolve, reject) => {\r\n        connection.query(sql, args, (err, result) => {\r\n            if(err) {\r\n                return reject (err);\r\n            }\r\n            resolve(result);\r\n        });\r\n    });\r\n}\r\n\r\nfunction _insert (connection, sql, args) {\r\n    return new Promise ((resolve, reject) => {\r\n        connection.query(sql, args, (err, result) => {\r\n            if(err) {\r\n                return reject (err);\r\n            }\r\n            resolve(result);\r\n        });\r\n    });\r\n}\r\n\r\nfunction _query (connection, statement, params) {\r\n    return new Promise((resolve, reject) => {\r\n        connection.query(statement, params, (err, results, fields) => {\r\n            if (err) {\r\n                return reject(err);\r\n            }\r\n            resolve([results, fields]);\r\n        });\r\n    });\r\n}\r\n\r\nfunction _rollback (connection, err) {\r\n    return new Promise((resolve, reject) => {\r\n        connection.rollback(() => {\r\n            if (err) {\r\n                return reject(err);\r\n            }\r\n            resolve();\r\n        });\r\n    });\r\n}\r\n\r\nfunction _selectOne (connection, sql, args) {\r\n    return new Promise ((resolve, reject) => {\r\n        connection.query(sql, args, (err, row) => {\r\n            if(err) {\r\n                return reject (err);\r\n            }\r\n            resolve(row[0]);\r\n        });\r\n    });\r\n}\r\n\r\nfunction _selectAll (connection, sql, args) {\r\n    return new Promise( (resolve, reject) => {\r\n        connection.query(sql, args, (err, rows) => {\r\n            if(err) {\r\n                return reject (err);\r\n            }\r\n            resolve(rows);\r\n        });\r\n    });\r\n}\r\n\r\nfunction _update (connection, sql, args) {\r\n    return new Promise ((resolve, reject) => {\r\n        connection.query(sql, args, (err, result) => {\r\n            if(err) {\r\n                return reject (err);\r\n            }\r\n            resolve(result);\r\n        });\r\n   });\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\uff11\uff0e\u76ee\u7684 \u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u8a18\u8ff0\u3067\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u306e\u30cd\u30b9\u30c8\u3092\u30b7\u30f3\u30d7\u30eb\u306b\u3059\u308b \uff12\uff0ecode &#8220;use script&#8221;; const fs = require(&#8216;fs&#8217;); const mysql = require(&#8216;my&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/posts\/2038"}],"collection":[{"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2038"}],"version-history":[{"count":9,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/posts\/2038\/revisions"}],"predecessor-version":[{"id":2082,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/posts\/2038\/revisions\/2082"}],"wp:attachment":[{"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}