Node.js 在表中添加新列时,Sequelize未更新
当我在表中添加新列时,我无法说服为什么我的sequelize模型没有更新 我在我的表中添加了新列“status INTEGER”,并在sequelize中的表模型中进行了如下更新。当我从我的表中检索值时,它什么也没有得到 请帮我解决这个问题。甚至我也运行了如下迁移Node.js 在表中添加新列时,Sequelize未更新,node.js,postgresql,express,sequelize.js,Node.js,Postgresql,Express,Sequelize.js,当我在表中添加新列时,我无法说服为什么我的sequelize模型没有更新 我在我的表中添加了新列“status INTEGER”,并在sequelize中的表模型中进行了如下更新。当我从我的表中检索值时,它什么也没有得到 请帮我解决这个问题。甚至我也运行了如下迁移 module.exports = { up: function (migration, DataTypes, done) { function addDisabledColumn() {
module.exports = {
up: function (migration, DataTypes, done) {
function addDisabledColumn() {
return migration.addColumn('applications', 'status',
{
type: DataTypes.INTEGER,
default: 0
}
)
}
addDisabledColumn().then(function () {
done();
}, function (err) {
done(err);
});
},
down: function (migration, DataTypes, done) {
done()
}
};
您需要重新同步表以使更改生效,请尝试
sequalize.sync({force:true})
希望有帮助:)您需要重新同步表以使更改生效,请尝试
sequalize.sync({force:true})
希望有帮助:)
当我从我的表中检索值时,它什么也没有得到
同样的事情也发生在我身上。我创建了一个向表中添加列的迁移。当我使用.findAll
、.findOne
、findAllAndCount
等时,该列将不存在
可以通过两种方式获取新列:
- 将新列添加到模型定义中。这不仅需要使用
查询获取新列,还需要在调用.find
时保存列。如果这不起作用:.create
- 使用
并明确定义要检索的新列:属性
const employee = await Employee.findOne({ where: { id: id }, attributes: ['id', 'name', 'NEW_COLUMN'], });
- 如果要在多个位置查询表,最好使用要查询的字段创建别名,并在运行“查找查询”的任何位置使用它:
const Employee = sequelize.define('employee', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, // DONT FORGET TO ADD THE NEW COLUMN TO YOUR MODEL NEW_COLUMN: { type: DataTypes.STRING, allowNull: true, } // ... }); Employee.basicAttributes = (alias = 'employee') => [ 'id', 'name', 'NEW_COLUMN', // ... ]; const employee = await Employee.findOne({ where: { id: id }, attributes: Employee.basicAttributes(), });
sequalize.sync({force:true})
当我从我的表中检索值时,它什么也没有得到
同样的事情也发生在我身上。我创建了一个向表中添加列的迁移。当我使用.findAll
、.findOne
、findAllAndCount
等时,该列将不存在
可以通过两种方式获取新列:
- 将新列添加到模型定义中。这不仅需要使用
查询获取新列,还需要在调用.find
时保存列。如果这不起作用:.create
- 使用
并明确定义要检索的新列:属性
const employee = await Employee.findOne({ where: { id: id }, attributes: ['id', 'name', 'NEW_COLUMN'], });
- 如果要在多个位置查询表,最好使用要查询的字段创建别名,并在运行“查找查询”的任何位置使用它:
const Employee = sequelize.define('employee', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, // DONT FORGET TO ADD THE NEW COLUMN TO YOUR MODEL NEW_COLUMN: { type: DataTypes.STRING, allowNull: true, } // ... }); Employee.basicAttributes = (alias = 'employee') => [ 'id', 'name', 'NEW_COLUMN', // ... ]; const employee = await Employee.findOne({ where: { id: id }, attributes: Employee.basicAttributes(), });
这并不理想,但它可以工作,并且不需要运行
sequalize.sync({force:true})
我需要将'sequalize.sync({force:true})'放在哪里?我需要什么时候运行该脚本?当您第一次创建表时,您必须已经同步了数据库。给我看看你的密码,我会告诉你的。您还可以在此处的文档“您的第一个模型”下看到,如果您使用迁移,您应该运行迁移以使更改生效阅读此文章应消除您的疑虑,我建议您阅读sequalize documentation。答:我已经阅读了该文档。即使运行了迁移,也会在我的表中添加新列,但“Sequelize”即使在表中也无法识别该新列。警告:这会删除表中的所有记录我需要将“sequalize.sync({force:true})”放在何处以及何时需要运行该脚本?首次创建表时,必须已同步数据库。给我看看你的密码,我会告诉你的。您还可以在此处的文档“您的第一个模型”下看到,如果您使用迁移,您应该运行迁移以使更改生效阅读此文章应消除您的疑虑,我建议您阅读sequalize documentation。答:我已经阅读了该文档。即使运行了迁移,也会在我的表中添加新列,但“Sequelize”即使在表中也无法识别该新列。警告:这会删除表中的所有记录