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

How to create assocations in Sequelize migrations?

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

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

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

或者:我应该 运行 迁移然后 sync(false) 吗? 那些不再相关的关系呢?

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

为了设置关联,我的模型最终是这样的:

User.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;
};

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