我为我的数据库创建了模型,然后运行迁移它成功创建了数据库中的表,之后我创建了迁移以将列添加到现有表中。当我运行 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) => {
}
};
username,name,socketId,updatedAt,createdAt
为什么它没有得到
的价值 token,status
这是我的代码
activeusers.findAll({raw:true}).then(Users=>{
console.log('online users')
})
答案 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)
我们必须手动将列字段添加到模型文件中。然后它将获取那些字段