node.js - 如何在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)
解决方案
如果一个产品只属于一个篮子,那么正确的定义是:
篮子:
Id | quantities
产品:
Id | name | inventory | BascketId
但我认为最正确的定义是:
产品:
Id, ...
篮子:
Id, UserId
篮子产品:
ProductId, BasketId
推荐阅读
- git - 如果远程分支不再存在,如何将本地 .repo 文件夹提取到文件中?
- azure - DocumentDB:批量导入存储过程:在 COSMOS DB 中插入多个分区键文档
- arrays - 类型“数字”不可分配给类型类名称 []
- blockchain - 有没有字符串比较的功能
- mysql - 为什么我在 phpmyadmin 上出现此错误:在修订时创建外键时出错(检查数据类型)?
- java - 使用 crashlytics-2.10.1 从 Google 控制台获取 ANR 报告
- ionic4 - Ionic 4. 如何在超级标签中刷新或更新页面
- javafx - JavaFX 旋转屏幕 180°
- php - 如果用户未登录,我如何重定向到登录页面
- php - 我可以对多个表使用单个 CodeIgniter 模型吗?