迁移 postgress 出错,我有两列,为什么?
Error with migration postgress, i have two columns over, why?
我有一个迁移,我只有四个列,id、name、last_name 和电子邮件,但是当我从邮递员那里查询时,它显示 SELECT \"id\", \"name\", \"lastName\", \"email\", \"createdAt\", \"updatedAt\" FROM \"Users\" AS \"User\"
上的其他列出了什么问题?
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('User', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
last_name: {
type: Sequelize.STRING,
allowNull: false,
},
email: {
type: Sequelize.STRING,
allowNull: false,
},
});
},
down: (queryInterface) => {
return queryInterface.dropTable('User');
}
};
当我使用我的服务时
static async getAllUsers() {
try {
const users = await database.User.findAll();
console.log('COnsOLE ', users)
return users
} catch (error) {
throw error;
}
}
我从邮递员那里得到这个错误:
{
"status": "error",
"message": {
"name": "SequelizeDatabaseError",
"parent": {
"length": 104,
"name": "error",
"severity": "ERROR",
"code": "42P01",
"position": "73",
"file": "parse_relation.c",
"line": "1180",
"routine": "parserOpenTable",
"sql": "SELECT \"id\", \"name\", \"lastName\", \"email\", \"createdAt\", \"updatedAt\" FROM \"Users\" AS \"User\";"
},
"original": {
"length": 104,
"name": "error",
"severity": "ERROR",
"code": "42P01",
"position": "73",
"file": "parse_relation.c",
"line": "1180",
"routine": "parserOpenTable",
"sql": "SELECT \"id\", \"name\", \"lastName\", \"email\", \"createdAt\", \"updatedAt\" FROM \"Users\" AS \"User\";"
},
"sql": "SELECT \"id\", \"name\", \"lastName\", \"email\", \"createdAt\", \"updatedAt\" FROM \"Users\" AS \"User\";"
}
}
我以前多次使用这个命令:sequelize db:migrate
和sequelize db:migrate:undo
这是我的 git 存储库:https://github.com/x-rw/basePostgresExpressjs
你应该位于服务器目录并写入npm run dev
那是因为你的 sequelize 模型实例有 updatedAt 和 createdAt 字段,因此它查询数据库也得到这两个字段。但是在您的迁移文件中没有 updatedAt 和 createdAt 字段。所以你的数据库 table 没有这些列。
你有两个选择,如果你真的不想使用 updatedAt 和 createdAt,你应该在初始化你的 sequelize 模型实例时指定它。 Check the api reference. 你应该会看到 options.timestamps。您可以将其设置为 false。
class YourModel extends Sequelize.Model { }
YourModel.init(
{
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [2, 100]
}
},
},
{
sequelize: sequelizeInstance,
timestamps: false // This is what you need.
}
);
但是,如果您想使用它,请选中 以生成正确的迁移。
我有一个迁移,我只有四个列,id、name、last_name 和电子邮件,但是当我从邮递员那里查询时,它显示 SELECT \"id\", \"name\", \"lastName\", \"email\", \"createdAt\", \"updatedAt\" FROM \"Users\" AS \"User\"
上的其他列出了什么问题?
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('User', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
last_name: {
type: Sequelize.STRING,
allowNull: false,
},
email: {
type: Sequelize.STRING,
allowNull: false,
},
});
},
down: (queryInterface) => {
return queryInterface.dropTable('User');
}
};
当我使用我的服务时
static async getAllUsers() {
try {
const users = await database.User.findAll();
console.log('COnsOLE ', users)
return users
} catch (error) {
throw error;
}
}
我从邮递员那里得到这个错误:
{
"status": "error",
"message": {
"name": "SequelizeDatabaseError",
"parent": {
"length": 104,
"name": "error",
"severity": "ERROR",
"code": "42P01",
"position": "73",
"file": "parse_relation.c",
"line": "1180",
"routine": "parserOpenTable",
"sql": "SELECT \"id\", \"name\", \"lastName\", \"email\", \"createdAt\", \"updatedAt\" FROM \"Users\" AS \"User\";"
},
"original": {
"length": 104,
"name": "error",
"severity": "ERROR",
"code": "42P01",
"position": "73",
"file": "parse_relation.c",
"line": "1180",
"routine": "parserOpenTable",
"sql": "SELECT \"id\", \"name\", \"lastName\", \"email\", \"createdAt\", \"updatedAt\" FROM \"Users\" AS \"User\";"
},
"sql": "SELECT \"id\", \"name\", \"lastName\", \"email\", \"createdAt\", \"updatedAt\" FROM \"Users\" AS \"User\";"
}
}
我以前多次使用这个命令:sequelize db:migrate
和sequelize db:migrate:undo
这是我的 git 存储库:https://github.com/x-rw/basePostgresExpressjs
你应该位于服务器目录并写入npm run dev
那是因为你的 sequelize 模型实例有 updatedAt 和 createdAt 字段,因此它查询数据库也得到这两个字段。但是在您的迁移文件中没有 updatedAt 和 createdAt 字段。所以你的数据库 table 没有这些列。
你有两个选择,如果你真的不想使用 updatedAt 和 createdAt,你应该在初始化你的 sequelize 模型实例时指定它。 Check the api reference. 你应该会看到 options.timestamps。您可以将其设置为 false。
class YourModel extends Sequelize.Model { }
YourModel.init(
{
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [2, 100]
}
},
},
{
sequelize: sequelizeInstance,
timestamps: false // This is what you need.
}
);
但是,如果您想使用它,请选中