gpt4 book ai didi

node.js - Node Sequelize where 通过多个表

转载 作者:行者123 更新时间:2023-12-03 22:23:51 25 4
gpt4 key购买 nike

当运动员和使用 Sequelize 的组织之间有多个表时,我希望能够检查运动员是否属于一个组织。这可能吗?或者我需要将协会扩展到运动员类(class)吗?

例如,我有一个如下图所示的结构
enter image description here

正如你所看到的,一个运动员属于一个团队,属于一个部门等等......直到一个组织。

我有一个使用 Sequelize 运行的 Node/mysql 数据库。我以前在 rails 上使用过 ruby​​,您可以在其中使用“通过”来表示可以通过特定的直接关系找到间接关系,但我没有找到任何类似的东西用于 Sequelize 上的属地关系。

仔细考虑一下,即使有解决方案可以做到这一点,我猜测 sequelize 将加入所有这些表,这将是昂贵的。最好让组织直接与运动员相关联,而不是通过一系列其他类(class)联系起来?

感谢您的帮助。

最佳答案

在 Sequelize 中,您可以在查询中嵌套 belongsTo 。在你的情况下,它看起来像:

Athlete.find({
include: [
{
model: Team,
include: [
model: Division,
include: [
model: AgeGroup,
include: [
model: League,
include: [
model: Season,
include: [
model: Organisation,

]
]
]
]
]
}
]
});

这很丑陋 - 但不一定是问题。首先要做的是尝试一下,看看性能是否有问题 - 很有可能它会很好。

如果性能是一个问题,并且您已经准备好所有数据库索引和内容,但仍然无法获得合理的性能,那么是的,直接在运动员上添加 organisation_id 是可以的。这称为“非规范化” - 您可以在其中存储冗余数据以优化读取性能。这是您应该尽可能避免的事情 - 但是当您无法避免时,这很好。

您只需要记住,当您更改运动员的 team_id 时,您可能还必须更新他们的 organisation_id

关于node.js - Node Sequelize where 通过多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42461369/

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