首页 > 解决方案 > 如何在sequelize中设置两个表的关联?

问题描述

我有三个名为用户、篮子和产品的表。

篮子表如下所示:

编号 | 数量 | 产品编号 | 用户身份

产品表如下所示:

编号 | 姓名 | 存货

用户表如下所示:

编号 | 姓名

这里, Products 表中的 id 与 Baskets 表中的 productId 相同。

我想要做的是从那些具有 Products.id 和 Baskets.productId 关系的表中获取所有记录。

如何为两个表添加关联?

我试过这样。

models.Baskets.hasOne(models.Products)
models.Products.belongsTo(models.Baskets, { foreignKey: 'productId', bindingKey: 'id' })

const getBaskets = async () => {
  try {
    return await models.Baskets.findAll({
      include: {
        model: models.Products
      }
    })
  } catch (error) {
    throw error
  }
}

但这对我不起作用。

我期望的也不会出现BasketId在 Products 表中。

更新:篮子表与用户表有关联。

所以篮子属于用户,用户有很多篮子。

models.Baskets.belongsTo(models.Users)
models.Users.hasMany(models.Baskets)

标签: node.jspostgresqlsequelize.js

解决方案


如果一个产品只属于一个篮子,那么正确的定义是:

篮子:

Id | quantities

产品:

Id | name | inventory | BascketId

但我认为最正确的定义是:

产品:

  Id, ...

篮子:

  Id, UserId

篮子产品:

  ProductId, BasketId

推荐阅读