inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

좋아요 기능 구현중 에러 질문입니다.

476

신민규

작성한 질문수 4

0

1.PNG2.jpg4.jpg첫번째 부터 순서대로post모델,user모델 passport.index의 deserializeUser부분 route.page 부분 입니다.



User is associated to User multiple times. To identify the correct association, you must use the 'as' keyword to specify the alias of the association you want to include.

 

 

위 같은 오류가 뜨는데 어떤게 문제인지 아무리 찾아봐도 모르겠습니다..

node.js mysql mongodb express typescript socket.io jwt

답변 1

1

제로초(조현영)

서버 재시작하면 사라질 것 같은데요? include에도 as 넣어서 하셨나요?

0

신민규

image3번재 사진이 안올라갔네요 만약 deserializeUser 이 부분 include를 말씀하시는거면 넣었는데도 재시작해도 오류가 뜨네요ㅜㅜㅜ

0

신민규

routes/user.js

const express = require("express");
const router = express.Router();
const { isLoggedIn } = require("../middlewares");
const { follow, followOut, like, likeC } = require("../controllers/user");


router.post("/:id/follow", isLoggedIn, follow);
router.delete("/:id/followOut", isLoggedIn, followOut);
router.post("/:postId/like", isLoggedIn, like);
module.exports = router;

controllers/user.js

const User = require("../models/user");
const Post = require("../models/post");


exports.follow = async (req, res, next) => {
    try {
        const user = await User.findOne({ where: { id: req.user.id } });
        if (user) {
            user.addFollowings(parseInt(req.params.id, 10));
            res.send("success");
        } else {
            res.status(404).send("no user");
        }
    } catch (error) {
        console.error(error);
        next(error);
    }
};


exports.followOut = async (req, res, next) => {
    try {
        const user = await User.findOne({ where: { id: req.user.id } });
        if (user) {
            user.removeFollowings(parseInt(req.params.id, 10));
            res.send("success");
        } else {
            res.status(404).send("no user");
        }
        console.log(User);
    } catch (error) {
        console.error(error);
        next(error);
    }
};


exports.like = async (req, res, next) => {
    try {
        const user = await User.findOne({
            where: { id: req.user.id },
            include: { model: Post },
        });
        if (user) {
            user.addLikings(parseInt(req.params.postId, 10));
            
            res.send("success");
        } else {
            res.status(404).send("no user");
        }
    } catch (error) {
        console.error(error);
        next(error);
    }
};


exports.likeC = (req, res, next) => {};

/passport/index.js

const passport = require("passport");
const local = require("./localStrategy");
const kakao = require("./kakaoStrategy");
const User = require("../models/user");
const Post = require("../models/post");


module.exports = () => {

    passport.serializeUser((user, done) => {

        done(null, user.id); 
    });

    passport.deserializeUser((id, done) => {
       
        User.findOne({
            where: { id },
            include: [
              
                {
                    model: User, //팔로잉
                    attributes: ["id", "nick"],
                    as: "Followers",
                },
                {
                    model: User, //팔로워
                    attributes: ["id", "nick"],
                    as: "Followings",
                },
                {
                    model: User, //좋아요
                    attributes: ["id", "nick"],
                    as: "Likings",
                },
            ],
        })
            .then((user) => done(null, user)) 
            .catch((err) => done(err));
    });

    local();
    kakao();
};

models/post.js

static associate(db) {
        db.Post.belongsTo(db.User);
        db.Post.belongsToMany(db.HashTag, { through: "PostHashtag" });
        //좋아요 한 사람
        db.Post.belongsToMany(db.User, {
            foreignKey: "likePostList",
            as: "Likeds",
            through: "likeList",
        });
    }
}

models/user.js

    static associate(db) {
        db.User.hasMany(db.Post);
        db.User.belongsToMany(db.User, {
            //팔로워
            foreignKey: "followingId",
            as: "Followers", 
            through: "Follow",
        });


        db.User.belongsToMany(db.User, {
            //팔로잉
            foreignKey: "follwersId",
            as: "Followings",
            through: "Follow", //db.sequelize.models.Follow로 접근 가능
        });


        db.User.belongsToMany(db.Post, {
            //좋아요 한 게시글 리스트
            foreignKey: "likeIdList",
            as: "Likings",
            through: "likeList",
        });
    }

혹시 몰라서 코드 남깁니다....

 

1

제로초(조현영)

User랑 Post간에 Likings여야하는데 User랑 User에 Likings 하셨습니다

0

신민규

어이쿠,,감사합니다.

이런 질문 하나하나 다 답변 달아주셔서 고생하십니다 감사합니다

깃헙 질문

0

82

2

강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.

0

76

1

aws - lightsail 이용 관련

0

58

1

4강 http 서버 만들때 ESM방식으로 해도 될까요?

0

81

2

모듈 사용 시 단점이 있나요?

0

82

1

node.js 버전 및 typescript 적용 문의

0

95

2

12.7. 방장기능(강퇴) 질문드립니다.

0

80

2

12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요

0

69

1

12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.

0

75

2

12.7.1스스로 해보기 질문되나요

0

95

3

시퀄라이즈 실습하기 질문드립니다.

0

196

9

<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.

0

97

2

크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.

0

113

2

구매 결제관련 질문입니다 !

0

123

1

다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제

0

134

2

node 설치 방법이 전혀다르게 바뀐것 같습니다.

0

152

2

12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류

0

122

2

무료/프리미엄 동시 소유 시 질문

0

117

1

비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?

0

135

2

10강 cors에러 localhost:4000으로 접속했을때 에러

1

159

2

webstorm 해결할 수 없는 변수 문제

0

155

2

혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?

0

149

2

LightSail 실행 중 오류 질문드립니다!

0

204

2

RedisStore 사용법 질문

0

133

2