如何在 Sequelize 迁移中创建关联?
How to create assocations in Sequelize migrations?
我正在使用迁移来创建实体。当然,他们之间有些关系。到目前为止,通过使用 sync(true)
,我享受了 Sequelize 在数据库级别为我实现关系的好处。
如何在迁移中表达新关系?
- 一对多:我应该处理外键列吗?
- 多对多:我应该创建中间体 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 列(对于上面的示例)
我正在使用迁移来创建实体。当然,他们之间有些关系。到目前为止,通过使用 sync(true)
,我享受了 Sequelize 在数据库级别为我实现关系的好处。
如何在迁移中表达新关系?
- 一对多:我应该处理外键列吗?
- 多对多:我应该创建中间体 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 列(对于上面的示例)