新增一个成功
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)
T
F
有一个不错的解决办法
- 在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 })
})
J
forEach循环 + await 不可靠
1
引用 jacksparrow68forEach循环 + await 不可靠
@jacksparrow68 已经解决了谢谢,async(item)
1
引用 tao1991123bulkCreate http://docs.sequelizejs.com/manual/tutorial/instances.html working in bulk creating u...
@tao1991123 已经解决了谢谢,async(item)
1
引用 fightAndLearn有一个不错的解决办法 在role表设置associate 获取角色实例 事务updateOrCreate
@fightAndLearn 已经解决了谢谢,async(item)
H
bulkCreate 应该可以吧
J
引用 1134506391@jacksparrow68 已经解决了谢谢,async(item)
@1134506391 好吧,你加一个async声明是可以的,但是我想说,forEach 里面用await可能不是你想的那样。https://www.jianshu.com/p/18a6d889769b
参与回复
登录后即可参与回复。登录