Mysql 我怎样才能与Sequelize有多对多的关联?

Mysql 我怎样才能与Sequelize有多对多的关联?,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,我有两种车型,一种是个人车型,另一种是汽车,定义如下: module.exports = function(sequelize, DataTypes) { var Person; Person = sequelize.define('Person', { name: { type: DataTypes.STRING, allowNull: false }, profession: { type: DataTypes.STRING

我有两种车型,一种是
个人
车型,另一种是
汽车
,定义如下:

module.exports = function(sequelize, DataTypes) {
  var Person;
  Person = sequelize.define('Person', {
    name: {
      type: DataTypes.STRING,
      allowNull: false
    },
    profession: {
      type: DataTypes.STRING,
      allowNull: false
    }
  }, {
    classMethods: {
      associate: function(models) {
        return Person.hasMany(models.Car, {
          foreignKey: 'PersonId'
        });
      }
    }
  });

  return Person;
};

这就是我们所期望的,并创建了三个表:
Persons
Cars
CarsPersons

我已经在表中添加了一些
汽车
,现在我想在
人员
表中添加一个
人员
。比如说,我的CarId
15。因此,在添加
人员时,我会:

DB.Person.create({name: 'My Name', profession: 'Lawyer'}).complete(function(err)....

如何在
CarsPersons
表中创建一个关联,使
CarId
为15,而
PersonId
为这个新ID是什么?

除了上面的答案(add方法)之外,Sequelize注入了一些在处理设置外键等方面提供便利的方法

DB.Person.create({name: 'My Name', profession: 'Lawyer'}).then(function (person) {
  // On latest master you can pass the id directly:
  person.addCar(15);

  // On older versions you will have to load the car object first:
  DB.Car.find(15).then(function (car) {
    person.addCar(car);
  });
});
在多对多关联的情况下,您可以调用.create[AssociatedModel],并自动为您设置键。例如,如果要创建属于某个人的新车实例,其工作原理与此类似:

// Find person who owns the car
DB.Person.find(5)
  .then(function (person) {

    // Will create entry with PersonId: 5, CarId: createdCarId
    person.createCar({ ... })
  })
上述Jan的解决方案在两个实例都已经存在的情况下效果很好,但我认为通常应该在创建时设置关联

查看文档中的关联以查看其他注入方法:

// Find person who owns the car
DB.Person.find(5)
  .then(function (person) {

    // Will create entry with PersonId: 5, CarId: createdCarId
    person.createCar({ ... })
  })