Web/Node.js & Nest.js

[Node]Like문 쿼리 조회하기

코딩은 내 밥줄 2024. 9. 15. 18:29

'%' + 검색어 + '%'가 아닌 `%${req.body.query}%`으로 해야된다

const ListSearch_query = `
SELECT 
	t3.*, CONVERT(@totalCount USING UTF8) as totalCount FROM (
	SELECT 
	        t1.*,
	        t2.username,
	    	CONVERT(t1.image USING UTF8) AS imgsrc,
	    	DENSE_RANK() OVER (ORDER BY t1.score DESC) AS rank
	    FROM 
	        game_title t1
	    LEFT JOIN 
	        userTable t2 ON t1.creator = t2.email
	    WHERE 
            t1.title LIKE ? OR t1.code LIKE ?
	    ORDER BY 
	        t1.score DESC
) AS t3,
(SELECT @totalCount := (SELECT COUNT(id) FROM game_title WHERE publicity = 1 AND title like ?)) AS T
LIMIT 3 OFFSET ?;
`;

router.post("/ListSearch", async (req, res) => {
    const pageing = (req.body.num - 1) * 3;
    const search = `%${req.body.query}%`;
    try {
        const [results] = await db.promise().query(ListSearch_query, [search, search, search, pageing]);

        if (results.length > 0) {
            res.send(results);
        } else {
            res.send({ message: "no data" });
        }
    } catch (error) {
        logErrorToDB(error);
        res.status(500).send({ message: "Database query error" });
    }
});