6주차 오류 해결

형집·2022년 12월 26일

NodeJS(4기)

목록 보기
37/56

오류상황1

const existUsers = await User.findAll({
    where: {
      [Op.or]: [{ nickname }],
    },
  });

Error: Invalid value { nickname: 'aaa111' }
문자열을 전달하는 것이 아니라 객체를 전달해서 발생
해결

  const existsUsers = await User.findAll({where:{ nickname: nickname}});

데이터를 넣을려는 상황에서

sqlMessage: "Unknown column 'postId' in 'field list'",
    sql: 'INSERT INTO `Posts` (`postId`,`content`,`createdAt`,`updatedAt`) VALUES (?,?,?,?);',
    parameters: [ null, '내용입력1', '2022-12-23 06:23:59', '2022-12-23 06:23:59' ] 

왜 postId null이지 했는데 dbeaver들어가보니 postId가 아닌 id로 되어있었음
table 지우고
migration수정하고

npx sequelize db:migrate

에러

No migrations were executed, database schema was already up to date.

migration의 내용을 수정하기 위해서는 sequelize db:migrate:undo 명령어를 실행해서 "되돌리기"를 해야합니다
해결함...


외래키 설정 !!!!!

models 에서
belongsTo 넣어주고

static associate(models) {
      models.Comment.belongsTo(models.Post,{foreignKey:"postId",targetKey: "postId"});
      models.Comment.belongsTo(models.User,{foreignKey:"userId",targetKey: "userId"});
    }

hasMany

static associate(models) {
      models.User.hasMany(models.comment,{foreignKey:"userId",sourceKey:"userId"});
    }

안들어감 구글링 열심히 한 결과
migration file 하나 생성

npx sequelize migration:generate --name fk-comment
module.exports = {
  async up (queryInterface, Sequelize) {
    await queryInterface.addColumn("Comments", "userId", {
      type: Sequelize.INTEGER,
    });
    await queryInterface.addConstraint("Comments", {
      fields: ["userId"],
      type: "foreign key",
      name: "users_comments_id_fk",
      references: {
        table: "Users",
        field: "userId",
      },
      onDelete: "cascade",
      onUpdate: "cascade",
    });
  },

  async down (queryInterface, Sequelize) {
    await queryInterface.removeColumn("Comments", "userId");
  }

comment에 userId라는 외래키 컬럼이 생김
comment 와 user 테이블이 연결이 되었다.

profile
개발자

0개의 댓글