我有两个表:Cats
和Masters
,它们之间有多对多的关系。
我使用连接表Foods
来链接它们。
Foods
表也需要作为独立表访问:读取食物类型等信息。
我遇到的问题是cat.id == 1
只能有一个food
master.id == 1
以下是models/food.js
:
module.exports = function(sequelize, DataTypes) {
return Food = sequelize.define("Food", {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
autoIncrement: true,
unique: true
},
type: DataTypes.STRING,
brandName: DataTypes.STRING
});
}
我在models/index.js
中创建的关系:
/* ... */
global.db = {
Sequelize: Sequelize,
sequelize: sequelize,
Food: sequelize.import(__dirname + '/food'),
Master: sequelize.import(__dirname + '/master'),
Cat: sequelize.import(__dirname + '/cat'),
}
// Master's table
global.db.Tutor.hasMany(global.db.Cat, { joinTableModel: global.db.Food });
// Cat's table
global.db.Student.hasMany(global.db.Master, { joinTableModel: global.db.Food });
// Food's table
global.db.Food.belongsTo(global.db.Cat);
global.db.Food.belongsTo(global.db.Master);
这是db上的产品:
MariaDB [cats_are_disloyal]> desc Foods;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| type | varchar(255) | YES | | NULL | |
| brandName | varchar(255) | YES | | NULL | |
| createdAt | datetime | NO | | NULL | |
| updatedAt | datetime | NO | | NULL | |
| MasterId | int(11) | NO | PRI | 0 | |
| CatId | int(11) | NO | PRI | 0 | |
+-------------+--------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
我注意到,虽然在模型中指定了id
列,但MasterId
和catId
都设置为primaryKey
,这肯定是我不知道的不想要。
那我该怎么办呢?