sequlize如何新增多个create()
新增一个成功
await this.ctx.model.RolePermission.create({
role_id: 2,
permission_id: 2
)}
新增多个失败
let id = body.roleId;
let permissionId = body.access_node;
console.log('wwwwww')
console.log(id) //1
console.log(permissionId) //[2,3,4]
// 新增多个,失败
permissionId.forEach(item => {
await this.ctx.model.RolePermission.create({
role_id: id,
permission_id: parseInt(item)
})
})
8 回复
有一个不错的解决办法
- 在role表设置associate
Role表
Role.associate = function(models) {
models.Role.belongsToMany(models.Permission, {
through: {
model: models.RolePermission,
unique: false
},
as: {
singular: 'RolePermission',
plural: 'RolePermissions'
},
foreignKey: 'fk_role_id',
otherKey: 'fk_permission_id',
constraints: false
})
}
- 获取角色实例
const role = await db.Role.findById(roleId)
- 事务updateOrCreate
await db.sequelize.transaction(t => {
return role.setRolePermissions(permission_ids, { transaction: t })
})
forEach循环 + await 不可靠
@jacksparrow68 已经解决了谢谢,async(item)
@tao1991123 已经解决了谢谢,async(item)
@fightAndLearn 已经解决了谢谢,async(item)
bulkCreate 应该可以吧
@1134506391 好吧,你加一个async声明是可以的,但是我想说,forEach 里面用await可能不是你想的那样。https://www.jianshu.com/p/18a6d889769b