【问题标题】:How to set association of two tables in sequelize?如何在sequelize中设置两个表的关联?
【发布时间】:2021-05-09 20:36:33
【问题描述】:

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

篮子表如下:

标识 |数量 |产品编号 |用户ID

Product 表如下所示:

标识 |姓名 |库存

用户表如下所示:

标识 |名字

这里, 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
  }
}

但这对我不起作用。

我也期望在 Products 表中没有 BasketId

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

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

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

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

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

    篮子:

    Id | quantities
    

    产品:

    Id | name | inventory | BascketId
    

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

    产品:

      Id, ...
    

    篮子:

      Id, UserId
    

    篮子产品:

      ProductId, BasketId
    

    【讨论】:

    • 我为什么要在产品中添加basketId?这对我来说没有任何意义。
    • 其实baskets表也属于users表。
    • @hotcakedev 因为您的产品属于您的购物篮。您还需要将UserId 作为外键添加到您的购物篮模型中。因为您的购物篮属于某个用户。
    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 2016-04-30
    • 2023-03-26
    • 1970-01-01
    • 2019-06-23
    • 2016-07-23
    • 2016-11-05
    • 2016-07-23
    相关资源
    最近更新 更多