javascript - 用重复的外键序列化多对多关系
问题描述
假设我有以下表格:
Messages:
+----+----------------------------------------------------------------+
| id | content |
+----+----------------------------------------------------------------+
| 1 | Please call 111-111-1111. I repeat: CAN YOU CALL 111-111-1111? |
| 2 | My number is 111-111-1111. |
| 3 | Please call me at either 222-222-2222 or 333-333-3333 |
+----+----------------------------------------------------------------+
PhoneNumbers:
+----+--------------+------------------+
| id | number | provider |
+----+--------------+------------------+
| 1 | 111-111-1111 | AT&T |
| 2 | 222-222-2222 | Deutsche Telekom |
| 3 | 333-333-3333 | Verizon |
+----+--------------+------------------+
现在我想创建一个表来表示消息中每次出现的电话号码:
PhoneNumberOccurrences:
+----+-----------+---------------+
| id | MessageId | PhoneNumberId |
+----+-----------+---------------+
| 1 | 1 | 1 |
| 2 | 1 | 1 |
| 3 | 2 | 1 |
| 4 | 3 | 2 |
| 5 | 3 | 3 |
+----+-----------+---------------+
下面是定义这个表的代码:
const Occurence = sequelize.define("PhoneNumberOcurrence", {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
},
});
PhoneNumber.belongsToMany(Message, { through: Occurence });
Message.belongsToMany(PhoneNumber, { through: Occurence });
但是,如果我尝试填充表格的前两行:
const message = await Message.findOne({ where: { id: 1 } });
const number = await PhoneNumber.findOne({ where: { id: 1 } });
await message.addPhoneNumber(number);
await message.addPhoneNumber(number);
第一行成功插入,但第二行没有。我的猜测是因为重复的外键。即使外键重复,我如何插入?
解决方案
推荐阅读
- javascript - ReactJs中组件的“功能未定义”onClick函数内联?
- ios - 继续 userActivity: NSUserActivity - 识别它来自 callkit 或联系人
- django - 通过外键关系限制 django 形式的选择
- python - Windows 安装 pytorch 0.3
- adaptive-design - 将网站桌面版布局与 Flipkart.com 或 Amazon.com 等移动版布局区分开来的技术是什么?
- python-3.x - Python 3、Selenium、Os - 如何上传文件夹中的所有图像
- angular - .forEach 不是 fromArray 角度上的函数
- excel - 使用多个 critea 1 公式计算数据
- kdb - 创建具有单值的字典时键入错误
- ios - 更改数据源后如何清除 UICollectionView 正在使用的内存?