gpt4 book ai didi

node.js - Sequelize 连接模型包括多对多

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:35 24 4
gpt4 key购买 nike

假设我有三个这样的模型

var User = _define('user', {
username: Sequelize.INTEGER
});
var UserPubCrawl = _define('userpubcrawl', {
user_id: Sequelize.STRING(64), // the user
bar_id: Sequelize.INTEGER // 1 to many
});

var Bars = _define('bar', {
name: type: Sequelize.STRING,
}

人际关系就像一顿饭

用户(一个)--> UserPubCrawl(多个)--> 条形(多个)

因此,对于特定的酒吧抓取,1 个用户可以对多个酒吧进行多次 pubcrawls我想找到“辛普森”去过的所有酒吧。

我需要更改模型定义吗?如果需要,请告诉我?findAll 查询会是什么样子?

最佳答案

如果我正确理解你的数据库关系,它可以表述为:

1个用户可以访问多个酒吧
1 个栏可供多个用户访问

因此,换句话说,Users 和 Bars 之间存在多对多关系,JOIN 表是 UserPubCrawl。

如果是这样,您的模型关联应如下所示:

User.belongsToMany(Bar, { through: UserPubCrawl });
Bar.belongsToMany(User, { through: UserPubCrawl });

而且,找出辛普森去过的所有酒吧非常简单:

User.findAll({
where: { user_id: '123' },
include: {
model: Bars,
through: { attributes: [] } // this will remove the rows from the join table (i.e. 'UserPubCrawl table') in the result set
}
});

关于node.js - Sequelize 连接模型包括多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43419514/

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