首页 > 解决方案 > 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)创建userIdin Item,并且代码使这种情况发生了两次。但问题是,我不想userId在 Item 中添加,而是buyerIdsellerId. 我需要如何设置选项db.User.hasMany(db.Item)

标签: javascriptmysqlsequelize.js

解决方案


鉴于您有buyerIdsellerIdItem,这应该这样做:

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]到这两个选项中。

参见参考手册


推荐阅读