在开发过程过中我们经常会出现需要插入一条数据然后利用其id进行二次操作的。这个过程中使用对一条sql去实现数据获取。
这个情况下,首先要考虑的是我们没有对应的id如何识别数据库中的哪条数据才是我们所需的数据将是一大难题。再者就是如果使用多一条sql是否是在浪费我们的资源和耗时呢。
为此,专门看了一下express中mysql模块中的一些代码定义。
function OkPacket(options) {
options = options || {};
this.fieldCount = undefined;
this.affectedRows = undefined;
this.insertId = undefined;
this.serverStatus = undefined;
this.warningCount = undefined;
this.message = undefined;
this.protocol41 = options.protocol41;
}
这个function的定义就是数据库操作成功的返回数据定义。我们可以看出来,里面有一个insertid。我们就是可以利用它实现我们想要的数据。
//获取连接
await pool.getConnection((err, conn)=>{
// 开启事务
conn.beginTransaction(err=>{
//插入日记主表数据
let sql = "insert test(num)value(11)";
conn.query(sql, function (err, data) {
console.log(data);
console.log(data.insertId);
});
//获取刚插入的数据?
//批量插入子表数据
//判断并返回结果
});
conn.commit();
conn.release();
});
最后我们可以打印一下数据看一下结果。
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 1,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
1