续集多对多关系

时间:2013-12-10 16:15:41

标签: mysql node.js sequelize.js

我有两个表:CatsMasters,它们之间有多对多的关系。

我使用连接表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列,但MasterIdcatId都设置为primaryKey,这肯定是我不知道的不想要。

那我该怎么办呢?

0 个答案:

没有答案