关于Sequelize添加记录得到该记录的id的问题

来源:15-6 现代大型Web架构讲解

如此消魂

2019-11-19

老师您好:
我在使用lin-cms中遇到一个问题,我发现使用Sequelize的save()方法往表中添加记录并不能返回添加记录的id值(id为自增长的主键)。
我一开始时使用了两个方法,但是这两个方法都不能见效。
方法一:使用getDataValue(‘id’)方法在查人操作完成后得到id值。

office.save();
    let lastId = await office.getDataValue('id');
    console.log(lastId);

但是这样得到的值为null
方法二:使用sql语句来得到最后一条插入的记录的id。-> SELECT LAST_INSERT_ID();

let sql ='SELECT LAST_INSERT_ID();';
let lastId = await db.query(sql,{
    type: db.QueryTypes.SELECT
});
console.log(lastId);

但是这样得到的值为 [ { ‘LAST_INSERT_ID()’: 0 } ]
数据是可以正常插入的,但是就是得不到id的值,
这是怎么回事?是不是我的思路有问题?请老师解答下

写回答

2回答

7七月

2019-11-20

ok,lin cms的问题建议在github上提出issue,项目工程很大,我也不是每个细节都非常清楚,团队开发的。

0
0

如此消魂

提问者

2019-11-19

老师我找到问题了,原因是我的office.save()前面没有加 await,导致insert语句在后面,SELECT LAST_INSERT_ID()语句在前面,所以查询到的受影响的行数为0,其实用这两种方法都可以的,只是需要在office.save()前面加await,让语句顺序执行

0
0

Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》

理解异步编程本质/培养面向对象思维,独立完成Node.js服务端开发

2229 学习 · 881 问题

查看课程