node mysql模块返回insertid为0解决方法
datehoer 12/31/2021 node
在用nodejs向MySQL插入数据的时候,获取返回值发现insertid一直是0,然后再获取的时候会获得比最新小1的值,比如说最新插入的值为1122,获取的id就是1121。
后来发现是因为获取id的时候,没有等待query执行完成就获取id了,而我们应该等待query执行完成后再获取id,这样才能获取到当前id。
但是当时给query加上await了,为什么不会执行呢?
因为query不支持异步操作,所以要重写query函数。
创建一个Promise然后将query放在里面进行执行,就可以了。
async function query(query,params){
return new Promise((resolve,reject)=>{
db.query(query,params,(err,results)=>{
if(err){
reject(err.message)
} else {
resolve(results.insertId);
}
})
});
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11