javascript - Sequelize.js:如何在两个模型之间的两个 1:N 关系中设置外键?
问题描述
我想做的是建立User
买卖关系Item
。为了使用 Sequelize 和 MySQL,我编写了这样的代码。
db.User.hasMany(db.Item);
db.Item.belongsTo(db.User, { as: "buyer" });
db.User.hasMany(db.Item);
db.Item.belongsTo(db.User, { as: "seller" });
但是,此代码会出错。我认为db.User.hasMany(db.Item)
创建userId
in Item
,并且代码使这种情况发生了两次。但问题是,我不想userId
在 Item 中添加,而是buyerId
和sellerId
. 我需要如何设置选项db.User.hasMany(db.Item)
?
解决方案
鉴于您有buyerId
和sellerId
列Item
,这应该这样做:
db.User.hasMany(db.Item);
db.Item.belongsTo(db.User, { as: "buyer", targetKey: "buyerId"});
db.Item.belongsTo(db.User, { as: "seller", targetKey: "sellerId" });
如果不是User.id
主键,您还应该添加foreignKey: [key name]
到这两个选项中。
参见参考手册
推荐阅读
- node.js - 每次重新启动 npm run dev 时,端口 3000 已在使用中
- resttemplate - 模拟 bean 无法在单元测试中注入依赖关系
- javascript - 用克隆元素替换元素后事件不起作用
- php - 为什么我在升级后未定义身份验证用户提供程序 [eloquent.multiple]
- bash - 数组的值未正确与数字进行比较
- c# - 如何在paint.net 中获取当前活动图像的名称?
- c# - ASP。带有 cookie 身份验证的 Net Core 2.2:当未授权仅 API 控制器时如何避免页面重定向
- elasticsearch - Elasticsearch 中的多字段聚合
- email - 在后端为前端重置密码的最佳方法是什么?
- linux - 编译器命令是什么意思?