Javascript Squelize:如何使用连接表创建其他关联?
我有三个基本的表A、B和C。A和B有多对多的关系。所以我使用A_B的连接表。C与A_B有一对多的关系。这就是使用sequelize时它们的定义Javascript Squelize:如何使用连接表创建其他关联?,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我有三个基本的表A、B和C。A和B有多对多的关系。所以我使用A_B的连接表。C与A_B有一对多的关系。这就是使用sequelize时它们的定义 A.associate = function(models) { A.belongsToMany(models.B, { through: 'A_B', as: 'Bs', foreignKey: 'a_id' }); }; B和C相似 C.associate = function(mod
A.associate = function(models) {
A.belongsToMany(models.B, {
through: 'A_B',
as: 'Bs',
foreignKey: 'a_id'
});
};
B和C相似
C.associate = function(models) {
C.hasMany(models.A_B, {
as: 'ABs',
foreignKey: 'c_id'
});
};
但是当我运行它时,我得到以下消息
Error: C.hasMany called with something that's not a subclass of Sequelize.Model
sequelize似乎不承认A_B是有效的。有办法解决吗
谢谢。如果您想获取A_B表的行,那么您需要创建一个表示它的模型(当您在with-through中声明关联时,它不会在sequelize中“创建”) 假设:
- 表A_B有三列A_id、B_id和c_id
const A = sequelize.define('A', {
id: Sequelize.STRING
})
A.associate = function(models) {
A.belongsToMany(models.B, {
through: {
model: 'A_B',
},
as: 'Bs',
foreignKey: 'a_id',
otherKey: 'b_id'
});
}
const B = sequelize.define('B', {
id: Sequelize.STRING
})
B.associate = function(models) {
B.belongsToMany(models.A, {
through: {
model: 'A_B',
},
as: 'As',
foreignKey: 'b_id',
otherKey: 'a_id'
});
}
const A_B = sequelize.define('A_B', {
a_id: Sequelize.STRING,
b_id: Sequelize.STRING,
c_id: Sequelize.STRING
})
const C = sequelize.define('C', {
id: Sequelize.STRING
})
C.associate = function(models) {
C.hasMany(models.A_B, {
as: 'ABs',
foreignKey: 'c_id'
});
}
谢谢你的帮助。它可以工作,但我需要从A_B的定义中删除“c_id”,以修复“无法添加外键约束”的错误。