Node.js Sequelize:更新数据库架构
在Sequelize中,我有以下模型文件:collection.jsNode.js Sequelize:更新数据库架构,node.js,sequelize.js,Node.js,Sequelize.js,在Sequelize中,我有以下模型文件:collection.js 'use strict'; module.exports = function(sequelize, DataTypes) { var Collection = sequelize.define('Collection', { title: DataTypes.STRING, bundleSize: DataTypes.INTEGER }, {
'use strict';
module.exports = function(sequelize, DataTypes) {
var Collection = sequelize.define('Collection', {
title: DataTypes.STRING,
bundleSize: DataTypes.INTEGER
}, {
classMethods: {
associate: function(models) {
Collection.belongsTo(models.User, {
onDelete: 'CASCADE',
foreignKey: {
allowNull: false,
}
})
}
}
});
return Collection;
};
我使用的是github上Sequelize提供的express示例
我通过sequelize cli创建了它,然后手动添加了关系。但是现在我无法创建外键。我用的是“同步”和“力等于真”。但我能得到的只是一个包含所有字段的表,但没有关联(外键)。
有没有办法根据模型文件更新数据库模式?或者,我必须手动编辑迁移文件,然后运行迁移?如果关联选项中未提供foreignKey属性,将自动创建foreignKey。它将由主表名和“Id”后缀组成。在您的情况下,它将显示“Collections”表中的“UserId”字段 集合.belongsTo(models.User{ onDelete:“级联” }) 如果要提供自定义外键,则它应该是字符串或带有字段属性的选项对象,其中包含表中列的名称
Collection.belongsTo(models.User, {
onDelete: 'CASCADE'
foreignKey: 'myCustomUserId'
})
我不知道如何将foreignKey表字段名正确地别名为in-app sequelize。以下内容可能就足够了
User.hasMany(models.Collection, {
onDelete: 'CASCADE',
foreignKey: {
name: 'myCustomForeignKey',
field: 'my_custom_foreign_key'
}
})
Collection.belongsTo(models.User, {
onDelete: 'CASCADE',
foreignKey: {
name: 'myCustomForeignKey',
field: 'my_custom_foreign_key'
}
})
它将创建自动应用程序内别名“myCustomForeignKey”以及表列“my_custom_ForeignKey”
因此,以下查询应给出相同的结果:
db.Collection.findAll({where: {myCustomForeignKey: 22}})
sequelize.query('select*from collections where my_custom\u foreign\u key=22')
您正在使用什么版本的sequelize查看如何声明关系。