Sequelize:模型未关联到 Model2

Sequelize: Model is not associated to Model2

我正在尝试使用 Sequelize 中的几个模型进行查询。我有 2 个模型,一个是 Project,另一个是 Specification。一个项目可以有多个Specification,一个specification只能属于一个项目。 table结构是:

项目:

规格:


这是我对规范 -> 项目的关系:

Project.belongsToMany(Specification);

我用来检索数据的函数是这个。基本上它获取所有数据,包括所有可能的关联:

// Retrieve all Projects from the database.
exports.findAll = (req, res) => {
  Project.findAll({
  include: [{
    all: true
  }]
})
.then(data => {
  res.send(data);
})
.catch(err => {
  res.status(500).send({
    message:
      err.message || "Some error occurred while retrieving projects."
  });
});
};

最后,我得到的错误是:

{"message":"specification is not associated to project!"}

有人可以帮助我或教我如何完成查询吗?我一直在努力,但无法得到正确的结果。 谢谢!

如果您将结构描述为

A project can have many Specifications, and a specification can only belong to one project

那么这是一个通常的1:N关系,在这种情况下,应该使用hasMany关联而不是belongsToMany,因为belongsToMany用于表示M:N 关系,在这种情况下,您将需要一个连接点 table/model。 那就是说你只需要更换

Project.belongsToMany(Specification);

Project.hasMany(Specification, { foreignKey: 'ProjectId' });

我总是更喜欢显式指示外键

使用hasMany而不是belongsToMany来定义关系

Project.hasMany(Specification, {
  foreignKey: { name: 'ProjectId' },
  targetKey: 'ProjectId',
  constraints: false,
  as: 'specifications',
}),