#node.js #mysql2 #eager #objection.js
#node.js #mysql2 #нетерпеливый #objection.js
Вопрос:
Итак, я хочу получить количество комментариев в сообщении, а не все сами комментарии, у меня есть это для работы с modifyEager вот так, но as('count')
, похоже, в этом случае ничего не делает
.eager('comments').modifyEager("comments", builder => {
builder.count().as('count')
})
Это действительно утомительно, потому что количество комментариев для каждого сообщения имеет эти значения:
[]
[]
[]
[]
[ Post { 'count(*)': 1 } ]
[]
Итак, я получил подсчет, делая это, но я, безусловно, делаю что-то неправильно
if(commentCount.length > 0)
return data[0]["count(*)"]
return 0
Есть идеи?
РЕДАКТИРОВАТЬ: показ рабочего кода для справки, чтобы помочь людям
module.exports = async (organizationId, scope) => {
return await Post.query()
.where("organization_id", organizationId)
.orderBy("post_id", "desc")
.limit(scope.limit)
.offset(scope.offset)
.select(
'posts.*',
Post.relatedQuery('comments').count().as('commentsCount')
)
.eager('users')
}
Ответ №1:
Не удалось это протестировать, но пример отображается в документах таким образом:
const posts = await Post
.query()
.select(
'Post.*',
Post.relatedQuery('comments').count().as('numberOfComments')
);
console.log(posts[4].numberOfComments);