[英]SequelizeDatabaseError: column \“functionCode\” does not exist, when it does
我正在編寫一個簡單的NodeJS代碼以使用sequelize從postgres讀取/寫入。 我的代碼適用於一個表,但是當測試另一個不相關的表時,類似的代碼也會中斷。 從錯誤堆棧跟蹤可以看出,我還發現拋出的錯誤令人困惑。
我禁用了timestamp列,並在CLI上執行了SQL,sequelize遇到了問題。
首先,這是/tfnMetadata.js中的模型
'use strict';
/**
* Model definition: See http://docs.sequelizejs.com/manual/models-definition.html
* See DataTypes: http://docs.sequelizejs.com/manual/data-types.html
* @param
* @returns {*} records.
*/
module.exports = (sequelize, DataTypes) => {
const tfnMetadata = sequelize.define('tfn_metadata', {
did: {
type: DataTypes.STRING, primaryKey: true, allowNull: false,
},
dnis: {
type: DataTypes.STRING,
},
functionCode: {
type: DataTypes.STRING,
},
country: {
type: DataTypes.STRING,
},
language: {
type: DataTypes.STRING,
},
coBrand: {
type: DataTypes.BOOLEAN,
},
collections: {
type: DataTypes.BOOLEAN,
},
smallBusiness: {
type: DataTypes.BOOLEAN,
},
welcomeMessageCode: {
type: DataTypes.STRING,
},
welcomeMessage: {
type: DataTypes.TEXT,
},
referenceKey: {
type: DataTypes.STRING,
},
partner: {
type: DataTypes.STRING,
},
}, { timestamps: false, tableName: 'tfn_metadata' });
tfnMetadata.sync({ alter: true });
return tfnMetadata;
};
psql中表的對應架構為:
Column | Type | Nullable | --------------------+------------------------+----------+ did | character varying(15) | not null | dnis | character varying(15) | | functioncode | character varying(20) | | country | character varying(25) | | language | character varying(20) | | cobrand | boolean | | collections | boolean | | smallbusiness | boolean | | welcomemessagecode | text | | welcomemessage | character varying(200) | | referencekey | character varying(50) | | partner | character varying(50)
然后是標准的./models/index
代碼( ./models/index
),它讀取模型定義文件以導入模型。 編輯-這是我沒有提供的唯一代碼,但與此處給出的代碼幾乎相同: https : //sequelize.readthedocs.io/en/1.7.0/articles/express/
使用以下函數在query.js文件中執行查詢:
const models = require('./models/index');
const getByPk = async (didNumber) => {
try {
const record = await models.tfnMetadata.findByPk(didNumber.toString());
logger.info('Query.getByPk() Returned the record from db.', record);
return record.dataValues;
} catch (err) {
logger.error('Query.getByPk() failed:', err);
throw err;
}
};
上面的代碼在client.js中被調用為-
const query = require('../../src/clients/pg/query');
const tfnData = await query.getByPk(did);
但是它失敗了-
Query.getByPk() Request to get record for did=111 undefined
Query.getByPk() failed: {
"name": "SequelizeDatabaseError",
"parent": {
"name": "error",
"length": 184,
"severity": "ERROR",
"code": "42703",
"hint": "Perhaps you meant to reference the column \"tfn_metadata.functioncode\".",
"position": "23",
"file": "parse_relation.c",
"line": "3294",
"routine": "errorMissingColumn",
"sql": "SELECT \"did\", \"dnis\", \"functionCode\", \"country\", \"language\", \"coBrand\", \"collections\", \"smallBusiness\", \"welcomeMessageCode\", \"welcomeMessage\", \"referenceKey\", \"partner\" FROM \"tfn_metadata\" AS \"tfn_metadata\" WHERE \"tfn_metadata\".\"did\" = '111';"
}
error: End - Error:
error: {
"errorMessage": "column \"functionCode\" does not exist",
"errorType": "SequelizeDatabaseError",
"stackTrace": [
"Query.formatError (/Users/.../node_modules/sequelize/lib/dialects/postgres/query.js:354:16)",
"query.catch.err (/Users/.../node_modules/sequelize/lib/dialects/postgres/query.js:71:18)",
"tryCatcher (/Users/.../node_modules/bluebird/js/release/util.js:16:23)",
"Promise._settlePromiseFromHandler (/Users/.../node_modules/bluebird/js/release/promise.js:512:31)",
錯誤代碼指示未定義列或缺少列functionCode
,提示正在詢問我是否要引用functionCode
。
表字段的名稱使用小寫或下划線,而不是駝峰式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.