为什么模型不能在sequelize

时间:2017-11-10 11:33:48

标签: mysql node.js sequelize.js

我为我的数据库创建了模型,然后运行迁移它成功创建了数据库中的表,之后我创建了迁移以将列添加到现有表中。当我运行 model.findall 查询时,它只获取我第一次创建的属性,例如这里是我的模型文件

'use strict';
 module.exports = {
 up: (queryInterface, Sequelize) => {
 return queryInterface.createTable('ActiveUsers', {
  id: {
    allowNull: false,
    autoIncrement: true,
    primaryKey: true,
    type: Sequelize.INTEGER
  },
  username: {
    type: Sequelize.STRING
  },
  name: {
    type: Sequelize.STRING
  },
  socketId: {
    type: Sequelize.STRING
  },
  createdAt: {
    allowNull: false,
    type: Sequelize.DATE
  },
  updatedAt: {
    allowNull: false,
    type: Sequelize.DATE
  }
   });
 },
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('ActiveUsers');
}
};

这里是要将列添加到此表的迁移文件

'use strict';

module.exports = {
up: (queryInterface, Sequelize) => {
queryInterface.addColumn(
  'ActiveUsers',
  'Token',
  {
    type: Sequelize.STRING,
    allowNull: false
  }
   )

  },

  down: (queryInterface, Sequelize) => {

 }
};

这是表pic table 它只获取模型文件中存在的属性,即

username,name,socketId,updatedAt,createdAt 

为什么它没有得到

的价值
 token,status

这是我的代码

 activeusers.findAll({raw:true}).then(Users=>{

      console.log('online users')


    })

2 个答案:

答案 0 :(得分:1)

您编写的第一个文件不是模型文件,而是一个迁移文件。如果要选择新字段,则应将其添加到模型文件中。

您的模型文件应如下所示:

module.exports = function(sequelize, DataTypes) {
    return sequelize.define('activeUsers', {
        id: {
            type: DataTypes.STRING,
            allowNull: false,
            primaryKey: true,
            unique: true
        },
        username: {
            type: Sequelize.STRING
        },
        name: {            
            type: Sequelize.STRING
        },
        socketId: {
            type: Sequelize.STRING
        },
        token: {
            type: Sequelize.STRING
        },
        status: {
            type: Sequelize.STRING
        },
        createdAt: {
            allowNull: false,
            type: Sequelize.DATE
        },
        updatedAt: {
            allowNull: false,
            type: Sequelize.DATE
        }
    });
};

您可以在Sequelize docs中详细了解如何向项目中添加模型。

答案 1 :(得分:0)

我们必须手动将列字段添加到模型文件中。然后它将获取那些字段