Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在表中添加新列时,Sequelize未更新_Node.js_Postgresql_Express_Sequelize.js - Fatal编程技术网

Node.js 在表中添加新列时,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() {

当我在表中添加新列时,我无法说服为什么我的sequelize模型没有更新

我在我的表中添加了新列“status INTEGER”,并在sequelize中的表模型中进行了如下更新。当我从我的表中检索值时,它什么也没有得到

请帮我解决这个问题。甚至我也运行了如下迁移

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”即使在表中也无法识别该新列。警告:这会删除表中的所有记录