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

时间:2015-02-10 14:35:06

标签: node.js migration sequelize.js

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

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

  1. 一对多:我应该照顾外键列吗?
  2. 多对多:我应该创建中间表并在每个实体的表上设置外键吗?
  3. 或者:我应该运行迁移然后sync(false)吗? 那些不再相关的关系呢?

1 个答案:

答案 0 :(得分:3)

当我使用迁移时,我设置了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;
};

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