node mysql模块返回insertid为0解决方法

在用nodejs向MySQL插入数据的时候,获取返回值发现insertid一直是0,然后再获取的时候会获得比最新小1的值,比如说最新插入的值为1122,获取的id就是1121。

后来发现是因为获取id的时候,没有等待query执行完成就获取id了,而我们应该等待query执行完成后再获取id,这样才能获取到当前id。

但是当时给query加上await了,为什么不会执行呢?

因为query不支持异步操作,所以要重写query函数。

创建一个Promise然后将query放在里面进行执行,就可以了。

1
2
3
4
5
6
7
8
9
10
11
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);
}
})
});
}

node mysql模块返回insertid为0解决方法

http://www.datehoer.com/posts/69c45d9a-6e80-11ee-a697-01b0896cf41d/

作者

datehoer

发布于

2021-12-31

更新于

2023-10-19

许可协议

评论