最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何使用续集在一个数据库请求中将数据插入到多个表中?

IT培训 admin 15浏览 0评论

如何使用续集在一个数据库请求中将数据插入到多个表中?

我有以下关系:

协会是:

  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。

现在您可以添加用户和所有相关数据,而无需等待服务器的答复。

如何使用续集在一个数据库请求中将数据插入到多个表中?

我有以下关系:

协会是:

  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。

现在您可以添加用户和所有相关数据,而无需等待服务器的答复。

发布评论

评论列表 (0)

  1. 暂无评论