Rob*_*t I 1 node.js sequelize.js
说我有三个这样的模特
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,
}
Run Code Online (Sandbox Code Playgroud)
这种关系是一顿饭
用户(一) - > UserPubCrawl(对很多人) - >吧(对很多人)
因此,对于特定的酒吧抓取,1个用户可以有多个pubcrawls到多个栏我想找到"Simpson"去过的所有栏.
我是否需要更改模型定义,如果有,请告诉我?findAll Query会是什么样的?
如果我理解您的数据库关系正确,可以说:
1个用户可以访问很多酒吧
1个酒吧可以被很多用户访问
所以,换句话说,你在Users和Bars之间存在多对多的关系,JOIN表是UserPubCrawl.
如果是这样,您的模型关联应如下所示:
User.belongsToMany(Bar, { through: UserPubCrawl });
Bar.belongsToMany(User, { through: UserPubCrawl });
Run Code Online (Sandbox Code Playgroud)
而且,找出辛普森去过的所有酒吧,真的很简单:
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
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4756 次 |
| 最近记录: |