nodejs 以async多次插入數據庫(末次獲得首次insertID)

代碼:

var async = require('async');
const mysql = require ('mysql');
var mysqlconfig=require('./config/mysql_config/mysql_config').mysqlconfig;
var connection = mysql.createConnection(mysqlconfig);
 
var tasks = [function(callback) {
		connection.beginTransaction(function(err) {
			callback(err);
		});
	}, function(callback) {
		connection.query('INSERT INTO open_tb SET lock_id=?, open_result=?', [1234,'open4'], function(err, result) {
			console.log('result:',result);
			console.log('result.open_id:',result.insertId);
			callback(err, result.insertId); // 生成的ID会传给下一个任务
			//callback(err, result); // 生成的ID会传给下一个任务
		});
	}, function(insertId, callback) {
		// 接收到上一条任务生成的ID
		console.log('insertId:',insertId);
		connection.query('INSERT INTO lock_tb SET lock_id=?, user_id=?', [1234,insertId], function(err, result) {
			callback(err);
		});
	}, function(callback) {
		connection.commit(function(err) {
			callback(err);
	});
}];
 
async.waterfall(tasks, function(err, results) {
	if(err) {
		console.log(err);
		connection.rollback(); // 发生错误事务回滚
	}
	connection.end();
});

注意:

result 內容為:

 {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 419,
  serverStatus: 3,
  warningCount: 0,
  message: '',
  protocol41: true,

  changedRows: 0 }


猜你喜欢

转载自blog.csdn.net/lawrence_loh/article/details/80664815