Как вывести кол-во лайков записи через scope в sequelize?
Есть запрос на получение записей:
await Post.scope('likeCount').findAndCountAll({...})
В ней scope на получение количества лайков данной записи
{
scopes: {
likeCount: {
// attributes: [[sequelize.fn('COUNT', sequelize.col('likePosts.id')), 'likeCount']], // Пробовал так, но ничего не получилось
include: {
model: LikePost,
},
},
},
}
Вывод данного кода в таком виде (Как видно просто выводится массив всех найденных лайков).
Вопрос в топ, как вывести количество найденных лайков, а не список.
Выше я пробовал подставлять через attributes но выводит ошибку "likePosts нет в FORM". На выходе такой запрос выходит:
SELECT "post".*, "likePosts"."id" AS "likePosts.id", "likePosts"."userId" AS "likePosts.userId", "likePosts"."createdAt" AS "likePosts.createdAt", "likePosts"."updatedAt" AS "likePosts.updatedAt", "likePosts"."commentPostId" AS "likePosts.commentPostId", "likePosts"."postId" AS "likePosts.postId" FROM (SELECT "post"."id", COUNT("likePosts") AS "likeCount" FROM "posts" AS "post" WHERE "post"."userId" IN ('1', '2') ORDER BY "post"."id" DESC LIMIT 3 OFFSET 0) AS "post" LEFT OUTER JOIN "likePosts" AS "likePosts" ON "post"."id" = "likePosts"."postId" ORDER BY "post"."id" DESC
Пробовал по всякому, менял названия и т д. Несколько часов потрачено в пустую.
[
{
"id": "1",
"description": null,
"topicId": null,
"ageLimit": 0,
"type": "public",
"accessСomment": "public",
"isPinned": false,
"quizId": null,
"blockedId": null,
"countryId": null,
"regionId": null,
"cityId": null,
"streetId": null,
"lang": null,
"status": true,
"createdAt": "2023-02-13T07:25:19.785Z",
"updatedAt": "2023-02-13T07:25:19.785Z",
"userId": "1",
"likePosts": [
{
"id": "4",
"userId": 1,
"createdAt": "2023-01-14T17:56:09.242Z",
"updatedAt": "2023-01-14T17:56:09.242Z",
"commentPostId": null,
"postId": "1"
},
{
"id": "5",
"userId": 1,
"createdAt": "2023-01-14T17:56:09.242Z",
"updatedAt": "2023-01-14T17:56:09.242Z",
"commentPostId": null,
"postId": "1"
}
]
}
]
Источник: Stack Overflow на русском