const likes = await Like.findAll({
where: {userId},
attributes: [
'postId',
[Sequelize.col("Post.userId"), 'userId'],
[Sequelize.col("Post.nickname"), "nickname"],
[Sequelize.col("Post.title"), "title"],
[Sequelize.col("Post.likes"), "likes"],
[Sequelize.col("Post.createdAt"), "createdAt"],
[Sequelize.col("Post.updatedAt"), "updatedAt"],
],
order: [[Post, "likes", "DESC"]],
include: [{model: Post, attributes: []}],
});
return res.status(200).json({data: likes});
include를 사용하여 테이블을 조인하는데, 메인 테이블이 아니라 조인되는 테이블의 특정 컬럼을 바탕으로 정렬을 할 필요가 있었다.
조건 내부의 order 내에 이중배열 형태로 전달해주면된다.
위 코드에서 예를 들자면, order: [[Post, "likes", "DESC"]]
부분인데, 이중배열 내에서 살펴보면 된다.
Post
테이블 내에서 likes
컬럼을 기준으로 DESC
방식으로 정렬한다.