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

Mysql 如何使用Sequelize从不同的表中插入/查找外键相关的行?,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,我想我在这个问题上已经做了足够的研究,我只是头疼而已 以下是我所做和理解的:我重组了MySQL数据库,以便将用户的数据保存在不同的表中,我使用外键。到目前为止,我的结论是,外键只用于一致性和控制,它们不会自动化或执行任何其他操作(例如,要在两个表中插入关于同一用户的数据,我需要使用两个单独的insert语句,外键在某种程度上无助于使其不同或自动) 很好。以下是我想做的:我想使用Sequelize一次插入、更新和检索所有相关表中的数据,但我完全不知道如何做到这一点。例如,如果用户注册,我希望能够在

我想我在这个问题上已经做了足够的研究,我只是头疼而已

以下是我所做和理解的:我重组了MySQL数据库,以便将用户的数据保存在不同的表中,我使用外键。到目前为止,我的结论是,外键只用于一致性和控制,它们不会自动化或执行任何其他操作(例如,要在两个表中插入关于同一用户的数据,我需要使用两个单独的insert语句,外键在某种程度上无助于使其不同或自动)

很好。以下是我想做的:我想使用Sequelize一次插入、更新和检索所有相关表中的数据,但我完全不知道如何做到这一点。例如,如果用户注册,我希望能够在包含一些用户信息的表“a”中插入数据,并在同一任务中在表B中插入一些其他数据(如专用表中的用户设置或其他)。与检索相同,我希望能够获得一个对象(或数组),其中包含来自不同表的所有相关数据,这些数据符合我要查找的条件

Sequelize文档以一种每件事都依赖于前一件事的方式涵盖了这些事情,Sequelize非常臃肿,有很多我不需要的东西。我不想使用.sync()。我不想使用迁移。我已经创建了我的数据库结构,我希望Sequelize附加到它

是否可以同时插入和检索多个相关行,并获取/使用单个Sequelize命令/对象?怎么做?

同样,我所说的“相关数据”是指通过共享同一外键而“链接”的数据

是否可以同时插入和检索多个相关行 时间和获取/使用单个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
中,您将获得所有数据及其要包含在查询中的所有关联模型

谢谢!这正是我想要的!:)现在,我将努力解决Sequelize在没有任何明显意义的情况下通过复数/单数化名称给我带来的问题。