Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Squelize:如何使用连接表创建其他关联?_Javascript_Node.js_Sequelize.js - Fatal编程技术网

Javascript Squelize:如何使用连接表创建其他关联?

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、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(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”,以修复“无法添加外键约束”的错误。