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

GI P님의 프로필 이미지

작성한 질문수

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

게시글 좋아요

좋아요 기능 구현

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",


대체 뭐가 문제인건지도 감이 안잡히네요 ㅠㅠ

답변 1

0

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

2024. 02. 03. 01:37

테이블명, 컬럼명 키워드를 `로 감싸보세요. 현재 템플릿 리터럴이므로

\`

를 사용해서 감싸야 할 것 같네요.

GI P님의 프로필 이미지

작성한 질문수

질문하기