[英]Node JS API Sequelize PostgreSQL UUID as primary key return error “column Nan does not exist”
[英]Sequelize: column "<column_name>" does not exist (Postgresql)
我尝试使用 sequelize 查询 postgres 数据库,但是在查询时我得到一个名为的错误:列“createdAt”不存在表看起来像:
Column | Type |
id | integer |
title | character varying(200) |
technologies | character varying(200) |
budget | character varying(20) |
description | text |
contact_email | character varying(100) |
createdat | date |
updatedat | date |
索引:“gigs_pkey” PRIMARY KEY, btree (id)
路由器:gigs.js
import express from "express";
import db from "../config/database.js";
import Gig from "../models/Gig.js";
const router = express.Router();
router.get("/", async (req, res) => {
try {
const gigs = await Gig.findAll();
console.log(gigs);
res.sendStatus(200);
} catch (err) {
console.log(err);
res.sendStatus(500);
}
});
export default router;
型号:Gigs.js
import Sequelize from "sequelize";
import db from "../config/database.js";
const Gig = db.define("gig", {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
},
title: {
type: Sequelize.STRING,
},
technologies: {
type: Sequelize.STRING,
},
budget: {
type: Sequelize.STRING,
},
description: {
type: Sequelize.STRING,
},
contact_email: {
type: Sequelize.STRING,
},
createdAt: {
type: Sequelize.DATEONLY,
},
updatedAt: {
type: Sequelize.DATEONLY,
},
});
export default Gig;
Sequelize 尝试像这样查询“createdat”和“updateat”:
SELECT "createdAt", "updatedAt" FROM "gigs" AS "gig";
这是抛出一个错误
正在执行(默认):SELECT “id”、“title”、“technologies”、“budget”、“description”、“contact_email”、“createdAt”、“updatedAt” FROM “gigs” AS “gig”
错误看起来像这样:
原文:错误:Parser.handlePacket 的 Parser.parseErrorMessage (D:\Programming\Database\PostgreSQL\Sequelize\node_modules\pg-protocol\src\parser.ts:369:69) 中不存在列“createdAt”(D: \Programming\Database\PostgreSQL\Sequelize\node_modules\pg-protocol\src\parser.ts:188:21) 在 Parser.parse (D:\Programming\Database\PostgreSQL\Sequelize\node_modules\pg-protocol\src\parser .ts:103:30) 在套接字。 (D:\Programming\Database\PostgreSQL\Sequelize\node_modules\pg-protocol\src\index.ts:7:48) 在 Socket.emit (node:events:527:28) 在 Socket.emit (node:domain: 475:12)在 addChunk(节点:内部/流/可读:315:12)在 Socket.Readable.push(节点:内部/流/可读:228)的 readableAddChunk(节点:内部/流/可读:289:9) :10) 在 TCP.onStreamRead (node:internal/stream_base_commons:190:23) {长度:169,严重性:'ERROR',代码:'42703',详细信息:未定义,提示:'也许你打算引用列“ gig.createdat".', position: '81', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_relation. c',行:'3611',例程:'errorMissingColumn',sql:'SELECT“id”,“title”,“technologies”,“budget”,“description”,“contact_email”,“createdAt”,“updatedAt”从 "gigs" AS "gig";', 参数: undefined }, sql: 'SELECT "id", "title", "technologies", "budget", "description", "contact_email", "createdAt", "updatedAt" FROM "gigs" AS "gig";',参数:{} }
您需要明确指出与 model 道具名称不同的所有字段名称(即使仅按字母大小写):
createdAt: {
type: Sequelize.DATEONLY,
field: 'createdat',
},
updatedAt: {
type: Sequelize.DATEONLY,
field: 'updatedat'
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.