简体   繁体   English

续集:列“<column_name> " 不存在 (Postgresql)</column_name>

[英]Sequelize: column "<column_name>" does not exist (Postgresql)

I Try to query using sequelize into postgres database, but while querying I get the error called: column "createdAt" does not exist Where table looks like:我尝试使用 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                   |

Indexes: "gigs_pkey" PRIMARY KEY, btree (id)索引:“gigs_pkey” PRIMARY KEY, btree (id)

Router: gigs.js路由器: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;

Models: Gigs.js型号: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 try to query 'createdat' and 'updateat' like this: Sequelize 尝试像这样查询“createdat”和“updateat”:

SELECT "createdAt", "updatedAt" FROM "gigs" AS "gig";

Which is throwing an error这是抛出一个错误

Executing (default): SELECT "id", "title", "technologies", "budget", "description", "contact_email", "createdAt", "updatedAt" FROM "gigs" AS "gig"正在执行(默认):SELECT “id”、“title”、“technologies”、“budget”、“description”、“contact_email”、“createdAt”、“updatedAt” FROM “gigs” AS “gig”

Error looks something loke this:错误看起来像这样:

original: error: column "createdAt" does not exist at Parser.parseErrorMessage (D:\Programming\Database\PostgreSQL\Sequelize\node_modules\pg-protocol\src\parser.ts:369:69) at Parser.handlePacket (D:\Programming\Database\PostgreSQL\Sequelize\node_modules\pg-protocol\src\parser.ts:188:21) at Parser.parse (D:\Programming\Database\PostgreSQL\Sequelize\node_modules\pg-protocol\src\parser.ts:103:30) at Socket.原文:错误: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) at Socket.emit (node:events:527:28) at Socket.emit (node:domain:475:12) at addChunk (node:internal/streams/readable:315:12) at readableAddChunk (node:internal/streams/readable:289:9) at Socket.Readable.push (node:internal/streams/readable:228:10) at TCP.onStreamRead (node:internal/stream_base_commons:190:23) { length: 169, severity: 'ERROR', code: '42703', detail: undefined, hint: 'Perhaps you meant to reference the column "gig.createdat".', position: '81', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_relation.c', line: '3611', routine: 'errorMissingColumn', sql: 'SELECT "id", "title", "technologies", "budget", "description", "contact_email", "createdAt", "updatedAt" FROM (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";', parameters: undefined }, sql: 'SELECT "id", "title", "technologies", "budget", "description", "contact_email", "createdAt", "updatedAt" FROM "gigs" AS "gig";', parameters: {} } "gigs" AS "gig";', 参数: undefined }, sql: 'SELECT "id", "title", "technologies", "budget", "description", "contact_email", "createdAt", "updatedAt" FROM "gigs" AS "gig";',参数:{} }

You need to indicate all field names explicitly that differ from model prop names (even if just by letter case):您需要明确指出与 model 道具名称不同的所有字段名称(即使仅按字母大小写):

  createdAt: {
    type: Sequelize.DATEONLY,
    field: 'createdat',
  },
  updatedAt: {
    type: Sequelize.DATEONLY,
    field: 'updatedat'
  },

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM