gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:34:39 24 4
gpt4 key购买 nike

我想我已经对这个主题做了足够的研究,但我只是头疼。

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

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

Sequelize 文档以一种每件事都依赖于前一个的方式涵盖了所有内容,而 Sequelize 则相当臃肿,有很多我不需要的东西。我不想使用 .sync()。我不想使用迁移。我已经创建了数据库的结构,并且希望将 Sequelize 附加到它。

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

同样,“相关数据”是指通过共享相同外键“链接”的数据。

最佳答案

Is it possible insert and retrieve several rows related at the same time and getting / using a single Sequelize command / object? How?

是的。您需要的是eager loading

看下面的例子

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 中,您将获取要包含在查询中的所有数据及其所有关联模型

关于mysql - 如何使用 Sequelize 从不同的表中插入/查找由外键相关的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50397089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com