使用 sequelize 创建具有关联层次结构的对象

Posted

技术标签:

【中文标题】使用 sequelize 创建具有关联层次结构的对象【英文标题】:Create objects with association hierarchy using sequelize 【发布时间】:2019-09-09 09:24:13 【问题描述】:

使用 nodejs 的 sequelize,创建对象层次结构,在我的例子中是 3 个级别。 Model1 属于 Model2,Model2 属于 Model3。当我调用 create 时,会创建 Model1 和 model 2 对象,但我不知道如何在数据库 (postgres) 中创建 Model3。

我尝试在 Model1 创建中包含 Model2,这解决了创建 Model2 的问题。但是我不知道如何通过model2包含Model3的创建。

Model1-> 有很多 Model2 -> 有很多 Model3

module.exports = 
    create(req, res) 
        return Model1.create(
            name: req.body.name,
            description: req.body.description,
            status: 0,
            Model2s: req.body.model2s,
        ,
            
                include: Model2
            
        )

现在正在创建 Model2 行,但我无法创建 Model3 行。 任何帮助表示赞赏。

【问题讨论】:

这是一个无聊的问题还是没有人有答案? 【参考方案1】:

显然,答案在 Sequelize Associations 文档页面的末尾,但根据元帅法的要求,就在长文档的末尾。

`return Product.create(
  title: 'Chair',
  user: 
    firstName: 'Mick',
    lastName: 'Broadstone',
    addresses: [
      type: 'home',
      line1: '100 Main St.',
      city: 'Austin',
      state: 'TX',
      zip: '78704'
    ]
  
, 
  include: [
    association: Product.User,
    include: [ User.Addresses ]
  ]
);`

最后的include语句不是模型而是关联:在我的例子中

`association: Model1.hasMany(Model2),
include: [Model2.hasMany(Model3)]`

希望这可以帮助更多人。

【讨论】:

以上是关于使用 sequelize 创建具有关联层次结构的对象的主要内容,如果未能解决你的问题,请参考以下文章

跨 Sequelize 关联播种数据

Sequelize:模型未关联到 Model2

Sequelize - 如何提取具有 1 个关联记录的记录并按关联记录属性排序

Sequelize 基于关联的查找

nodejs + sequelize :: 在需要的地方包含 false

如何使用 sequelize-typescript 从源实例创建关联实例