과거 프로그래밍 자료들/프로젝트

sequelize belongsToMany 내 as 시퀄라이즈 사용

평부 2022. 9. 6. 14:54

 

 

* 상황 :  User함수를 Followers, Followings로 as로 명칭 정함, through를 통해 "Follow" 모델을 생성
= (sql문: create Follow)

- as에 적힌 문자를 통해 다양한 시퀄라이즈 생성(belongsToMany 일 때만 가능)

ex)  addFollowings, addFollowing, getFollowing, setFollowing, removeFollowing 지원

 

A.getB : 관계 있는 로우(row) 조회
A.addB : 관계 생성
A.setB : 관계 수정
A.removeB : 관계 제거

 

 db.User.belongsToMany(db.User, {
      foreignKey: "followingId",
      as: "Followers",
      through: "Follow",
    });
    db.User.belongsToMany(db.User, {
      foreignKey: "followerId",
      as: "Followings",
      through: "Follow",
    });

 

https://www.inflearn.com/questions/6670

 

팔로우, 언팔로우 할때 쓰이는 함수 질문드려요 - 인프런 | 질문 & 답변

팔로우를 하거나 언팔로우를 할때 시퀄라이즈에서await user.addFollowing(parseInt(req.params.id, 10));혹은await user.removeFollowing(parseInt(req.params.id, 10))를 사용해 구현하던데 addFl...

www.inflearn.com

 

https://www.youtube.com/watch?v=qIVTBRAaVBQ&list=PLcqDmjxt30RuRk0gcFwT_s7nexAYRF2_I&index=58 

 

(1번) model : Post 항목 삭제 vs (2번) model Use에서 belongsToMany를 통해 만들어진 as로 팔로잉 삭제

 

//1번
router.delete("/:id", isLoggedIn, async (req, res, next) => {
  try {
    await Post.destroy({ where: { id: req.params.id, userId: req.user.id } });
    res.send("OK");
  } catch (error) {
    console.error(error);
    next(error);
  }
  
 //2번
 router.post("/:id/unfollow", async (req, res, next) => {
  try {
    const user = await User.findOne({ where: { id: req.user.id } });
    if (user) {
      const result = await user.removeFollowing(parseInt(req.params.id, 10));
      res.json(result);
    } else {
      res.status(404).send("no user");
    }
  } catch (error) {
    console.error(error);
    next(error);
  }
});