gpt4 book ai didi

postgresql - 迁移 postgress 出错,我有两列,为什么?

转载 作者:行者123 更新时间:2023-12-03 22:16:07 25 4
gpt4 key购买 nike

我有一个迁移,我只有四个列,id、name、last_name 和 email 但是当我从 postman 那里查询时,它显示了 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;
}
}

我从 postman 那里得到这个错误:

{
"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:migratesequelize db:migrate:undo

这是我的 git 存储库:https://github.com/x-rw/basePostgresExpressjs

你应该位于服务器目录并编写 npm run dev

最佳答案

那是因为您的 sequelize 模型实例具有 updatedAt 和 createdAt 字段,因此它也查询数据库以获取这两个字段。但是在您的迁移文件中没有 updatedAt 和 createdAt 字段。所以你的数据库表没有这些列。

你有两个选择,如果你真的不想使用 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.
}
);

如果你想使用它,检查 my answer here生成正确的迁移。

关于postgresql - 迁移 postgress 出错,我有两列,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63102705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com