用一个表“hasMany”其他表续作关联

时间:2017-10-11 01:54:20

标签: sequelize.js

将同一个表与多个表关联的最佳方法是什么。我在mysql数据库,Owners,Pets,Posts中有3个表。业主有很多宠物,而业主也有很多帖子。当我在帖子和宠物模型中建立关联时如下

Posts.associate = function(models) {
    Posts.belongsTo(models.Owners, {
        foreignKey: {
            allowNull: false
        }
    });
};
Pets.associate = function(models) {
    Pets.belongsTo(models.Owners, {
        foreignKey: {
            allowNull: false
        }
    });
};

在Owners模型中,我试图建立关联,有很多,就像这样:

Owners.associate = function(models) {
    Owners.hasMany(models.Pets, {
      onDelete: "cascade"
    });
};
Owners.associate = function(models) {
    Owners.hasMany(models.Posts, {
      onDelete: "cascade"
    });
};

但我继续得到错误,其中一个表没有与Owners表关联。是否有更好的方法使这种关联有效?

1 个答案:

答案 0 :(得分:0)

您只需要在Owners模型上使用hasMany,就不必在其他模型上使用belongsTo。当您使用hasMany时,它会在目标模型上创建OwnerId,我建议使用as以便您可以识别 如果您需要对查询进行包含,请输入密钥。您只需定义一次关联功能:

Owners.associate = function(models) {
  Owners.hasMany(models.Pets, {
    as: 'OwnerPets',
    onDelete: "cascade"
  });
  Owners.hasMany(models.Posts, {
    as: 'OwnerPosts',
    onDelete: "cascade"
  });
};