如何在Sequelize迁移中创建关联?

Dor*_*man 6 migration node.js sequelize.js

我正在使用迁移来创建实体.当然,有些人之间有关系.到目前为止,通过使用sync(true),我很享受Sequelize在数据库级别为我实现关系的好处.

如何在迁移中表达新关系?

  1. 一对多:我应该照顾外键列吗?
  2. 多对多:我应该创建中间表并在每个实体的表上设置外键吗?

或者:我应该进行迁移sync(false)吗?那些不再相关的关系怎么样?

swi*_*fty 3

当我使用迁移时,我设置了sync:false。

为了设置关联,我的模型最终如下所示:

用户.js:

module.exports = function(sequelize, DataTypes) {
    var User = sequelize.define("User", {
        "fname": {
            "type": DataTypes.STRING,
            "unique": false,
            "allowNull": false
        },
        "lname": {
            "type": DataTypes.STRING,
            "allowNull": false
        }
    }, {
        "tableName": "Users",
        "classMethods": {
            "associate": function (models) {
                Locale.hasMany(models.Permissions);
            }
        }
    });

    return User;
};
Run Code Online (Sandbox Code Playgroud)

如果表不存在,这仍然会创建该表。不过,我建议创建表仍然是迁移的一部分。请注意,在迁移中创建一个包含 id、updatedAt、createdAt 和 PermissionId 列的表(对于上面的示例)