24.02.03 01:35 작성
·
275
0
제로초님의 코드대로 한다라고 하면 게시물 데이터를 받을때 프론트쪽에 postId와 userId를 보내고 프론트에서 계산을 해야하던데 백엔드에서 이 게시물을 로그인한 유저가 좋아요를 눌럿는지 안눌엇는지에 대한 데이터를 바로 내주고 싶어서 이렇게 짜봣는데 자꾸 에러가 납니다.
게시물에 대한 코드는 이거구요
const express = require("express")
const {
Post,
Sequelize,
User,
Like
} = require("../models")
const router = express.Router()
router.get("/",async(req,res,next)=>{
try {
const posts = await Post.findAll({
// where:{
// id:lastId
// },
limit: 10,
// DESC 최신순 ASC 오래된순
order:[["createdAt","DESC"]],
// 다른사람도 좋아요를 햇는지를 보여주는데 의미 없어보임
// include: [{
// model: User, // 좋아요 누른 사람
// as: 'Liked',
// required: false,
// attributes: ['id'],
// through: {
// attributes: []
// },
// }],
attributes:[
"id",
"content",
"title",
"createdAt",
// 만든사람
[Sequelize.literal("(SELECT `nickName` FROM `Users` WHERE `Users`.`id` = `Post`.`userId`)"), "nickName"],
// 이미지 소스
[Sequelize.literal("(SELECT `src` FROM `Images` WHERE `Images`.`postId` = `Post`.`id`)"), "src"],
[
Sequelize.literal(`
(SELECT CASE WHEN COUNT(*)
FROM Liked
WHERE Liked.PostId = Post.id
AND Liked.UserId =: userId
END) AS isLiked
`),
"isLiked"
],
],
raw: true,
})
res.status(201).send(posts)
} catch (error) {
console.error(error)
next(error)
}
})
module.exports = router
에러는 이렇게 나고 있습니다.
sqlState: '42000',
sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM Liked\n" +
' WHERE Liked.PostId = Post.id\n' +
" ' at line 3",
대체 뭐가 문제인건지도 감이 안잡히네요 ㅠㅠ