如何使用sequelize从不同的表中插入/查找外键相关的行?

vwkv1x7d  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(436)

我想我在这个问题上已经做了足够的研究,只是头痛而已。
以下是我所做的和理解的:我重组了mysql数据库,以便将用户的数据保存在不同的表中,我使用的是外键。到目前为止,我只得出结论,外键只用于一致性和控制,它们不会自动化或执行任何其他操作(例如,要在两个表中插入关于同一用户的数据,我需要使用两个单独的insert语句,外键在某种程度上无助于使其不同或自动)。
好的。下面是我想做的:我想使用sequelize一次从所有相关的表中插入、更新和检索数据,但我完全不知道怎么做。例如,如果用户注册,我希望能够将数据插入包含一些用户信息的表“a”中,并在同一任务中,将一些其他数据插入表b中(如专用表中的用户设置或其他)。与检索相同,我希望能够获得一个对象(或数组),其中包含来自不同表的所有相关数据,这些数据符合我要查找的条件。
sequelize文档以一种每件事都依赖于前一件事的方式涵盖了所有的事情,sequelize有很多我不需要的东西。我不想使用.sync()。我不想使用迁移。我已经建立了我的数据库结构,我想续集附加到它。
是否可以同时插入和检索多个相关行并获取/使用单个sequelize命令/对象?怎样?
同样,我所说的“相关数据”是指通过共享同一外键而“链接”的数据。

ut6juiuv

ut6juiuv1#

是否可以同时插入和检索多个相关行并获取/使用单个sequelize命令/对象?怎样?
对。你需要的是快速加载。
看下面的例子

const User = sequelize.define('user', {
  username: Sequelize.STRING,
});

const Address = sequelize.define('add', {
  address: Sequelize.STRING,
});

const Designation = sequelize.define('designation', {
  designation: Sequelize.STRING,
});

User.hasOne(Address);
User.hasMany(Designation);

sequelize.sync({ force: true })
  .then(() => User.create({
    username: 'test123',
    add: {
      address: 'this is dummy address'
    },
    designations: [
      { designation: 'designation1' },
      { designation: 'designation2' },
    ],
  }, { include: [Address, Designation] }))
  .then(user => {
    User.findAll({
      include: [Address, Designation],
    }).then((result) => {
      console.log(result);
    });
  });

console.log ,您将获得所有数据及其要包含在查询中的所有关联模型

相关问题