sequelize/ createdAt 삭제했는데 쿼리문 날릴 때마다 값 달라고 에러뜸

flobeeee·2021년 4월 7일
0

시행착오

목록 보기
9/43
  1. item 에 대한 정보를 데이터베이스에서 꺼낼 때

err : Unknown cloumn 'Item.createdAt' in Fidel list'

item 테이블에 createdAt가 없는데 자꾸 저 해당 에러가 떴다.

// models/item.js
'use strict';
const {
  Model
} = require('sequelize');

module.exports = (sequelize, DataTypes) => {
  class Item extends Model {
    static associate(models) {
    }
  }
  Item.init({
    title: DataTypes.STRING,
    price: DataTypes.INTEGER,
    photo: DataTypes.STRING,
    description: DataTypes.STRING,
    endTime: DataTypes.DATE,
    winnerId: DataTypes.INTEGER,
    isClosed: DataTypes.BOOLEAN,
    city: DataTypes.STRING
  }, {
    sequelize,
    modelName: 'Item',
  });
  return Item;
};

내 Item 속성들을 보면 createdAt가 없다
그와 같은 속성을 가진 endTime가 있다.
그래서 속성만 보고 createdAt를 달라고 판단하는 것 같았다.

그래서 스택오버플로우를 찾아봤다.

해결방법

데이터베이스와 노드를 연결해주는 config.json 에

"host": "127.0.0.1",
    "dialect": "mysql",
    "define": { 
      "timestamps": false 
  }

define: { timestamps: false } 이걸 추가해줬고, 해결되었다.
약간 임시방편으로 막는 것 같지만, 이런 방법이라도 있어서 정말 다행이다.


  1. 회원가입 불가 (createdAt 이 안됨..)

그래서 해결방법으로 넣었던 아래 코드를 다시 지웠다.

"define": { 
      "timestamps": false 
  }

해결방법

config 에 설정하면 다른 createdAt도 영향을 받아서
각각 createdAt 이 필요없는 모델에 추가해줬다.
아래 예시

'use strict';
const {
  Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class Seller_item extends Model {

    static associate(models) {
    }
  }
  Seller_item.init({
    userId: DataTypes.INTEGER,
    itemId: DataTypes.INTEGER
  }, {
    timestamps: false, // 여기 추가해줬다.
    sequelize,
    modelName: 'Seller_item',
  });
  return Seller_item;
};
profile
기록하는 백엔드 개발자

0개의 댓글