인프런 커뮤니티 질문&답변

정세연님의 프로필 이미지

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

게시글 좋아요

db 컬럼 에러 질문드립니다

작성

·

280

0

안녕하세요

혹시 저 에러는 어디를 확인해야 할까요??

깃헙 코드를 참고해도 왜 db에 컬럼이 없다고 나오는지 모르겠습니다..

답변 4

0

정세연님의 프로필 이미지
정세연
질문자

덕분에 해결 되었습니다. 감사합니다 ㅎㅎ

0

정세연님의 프로필 이미지
정세연
질문자

User.associate = (db) => {
    db.User.hasMany(db.Post);
    db.User.hasMany(db.Comment);
    db.User.belongsToMany(db.Post, { through: "Like", as: "Liked" });
    db.User.belongsToMany(db.User, {
      through: "Follow",
      as: "Followers",
      foreignKey: "FollowingId",
    });
    db.User.belongsToMany(db.User, {
      through: "Follow",
      as: "Followings",
      foreignKey: "FollowerId",
    });
  };
  return User;

넵 User쪽에서도 만들었습니다 ㅜㅜ

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

이러면 테이블이 생겨야 정상입니다. DB에 Like 테이블이 있을거에요. 처음 서버 실행할 때 CREATE TABLE IF NOT EXIST 하면서 SQL 쫘르륵 뜨지 않나요?

정세연님의 프로필 이미지
정세연
질문자

넵 디비 실행할 때 말씀처럼 실행됩니다 . like는 생겼습니다!

근데 follower follwing만 잇고 liker가 없습니다.. 관계설정편을 다시 돌려봐도 잘 모르겠네요ㅜㅜ 

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

테이블이 잘못 생성된 겁니다. 테이블을 지우고 서버 재시작하면 다시 생성됩니다.

0

정세연님의 프로필 이미지
정세연
질문자

module.exports = (sequelize, DataTypes) => {
  const Post = sequelize.define(
    "Post",
    {
      content: {
        type: DataTypes.TEXT,
        allowNull: false,
      },
    },
    {
      charset: "utf8mb4", //한글 및 이모티콘
      collate: "utf8mb4_general_ci",
    }
  );
  Post.associate = (db) => {
    db.Post.belongsTo(db.User);
    db.Post.belongsToMany(db.Hashtag, { through: "PostHashtag" });
    db.Post.hasMany(db.Comment);
    db.Post.hasMany(db.Image);
    db.Post.belongsToMany(db.User, { through: "Like", as: "Likers" });
    db.Post.belongsTo(db.Post, { as: "Retweet" });
  };
  return Post;
};

model/post.js 입니다

db에 likers 테이블 자체가 생기지 않습니다.

시간 내주셔서 감사합니다

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

반대로 User에도 belongsToMany 만드셨나요? DB 테이블은 Like 입니다.

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

DB를 직접 확인해보아야 합니다. Likers 테이블이 생겼고 그 안에 PostId 컬럼이 있는지를요. 그리고 belongsToMany 관계 코드도 보여주세요. User와 Post간에요.