Sequelize设置autoIncrement自增主键调用build后id返回null如何处理
问题原因
build()方法的作用仅为在本地内存中构建 Sequelize 模型实例,不会将数据写入数据库。你设置的id字段是自增主键,该值由数据库在写入数据时自动生成,实例还未持久化到数据库时,自然没有对应的id值,因此显示为null。- 你当前的代码仅执行了实例构建逻辑,没有执行数据库写入操作,这是id为空的直接原因。
解决方法
你需要将构建的实例持久化到数据库,有两种常用实现方式:
方式1:build后调用save方法
save() 方法会将实例数据写入数据库,完成后自动将数据库生成的id回填到实例对象中,示例代码如下:
router.get('/sample', async (req, res) => { const newSample = SampleModel.build({ name: "User123" }) // 等待数据库写入完成 await newSample.save() console.log(newSample) // 此时id已经有数据库生成的自增值 })
注意路由回调函数需要添加async关键字,才能在内部使用await等待异步操作完成。
方式2:直接使用create方法
create() 是 build() + save() 的组合封装方法,可一步完成实例构建和持久化,代码更简洁:
router.get('/sample', async (req, res) => { const newSample = await SampleModel.create({ name: "User123" }) console.log(newSample) // 直接返回带id的持久化实例 })
内容的提问来源于stack exchange,提问作者shasank shakya
相关产品推荐
相关产品推荐

