多个表中?"/>
如何使用续集在一个数据库请求中将数据插入到多个表中?
我有以下关系:
协会是:
users.belongsToMany("roles", {
through: "userRoles",
});
[创建用户时,我这样做:
register: async (obj, args, context, info) => {
const PasswordHash = await bcrypt.hash(args.input.Password, 12);
const user = db.users.create({
...args.input,
Password: PasswordHash,
});
db.userroles.create({
UserId: user.Id,
RoleId: args.input.roleId,
});
},
如何在一个请求中执行此操作?现在我在创建用户时正在做一个,然后获取新创建用户的ID并向该用户添加角色(请求2)。
后续,可以说我将有一个以上的联结表绑定到用户表,我又将如何插入一个数据库请求中的所有表?
回答如下:除非您要在MySQL中创建自定义存储过程,否则无法同时创建用户和添加角色。
让我们尝试简化您的问题。创建用户之前,您不知道USER ID。因此,不可能在创建用户之前创建角色。解决此问题的一种方法是在代码中生成用户ID。
您可以在“用户”表中添加一个称为GeneratedId的额外列,并将ID列转换为AUTO_INCREMENT,然后在插入用户之前使用https://www.npmjs/package/uuid之类的包来生成唯一ID。
使用相同的生成ID将角色与用户相关联(“ UserRole”表中的“ UserId”列将包含您在代码中生成的ID。
现在您可以添加用户和所有相关数据,而无需等待服务器的答复。
更多推荐
如何使用续集在一个数据库请求中将数据插入到多个表中?
发布评论