objection.js modifyEager .as ('count'), похоже, ничего не делает для .count () - PullRequest
1 голос
/ 08 марта 2019

Итак, я хочу получить количество комментариев в сообщении, а не все сами комментарии. Я заставил его работать с modifyEager, например, но as('count'), похоже, ничего не делает в этом случае

.eager('comments').modifyEager("comments", builder => {
    builder.count().as('count')
})

Это действительно утомительно, потому что commentsCount для каждого поста имеет следующие значения:

[]
[]
[]
[]
[ 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 Ответ

0 голосов
/ 08 марта 2019

Невозможно проверить это, но пример выглядит в документации следующим образом:

const posts = await Post
  .query()
  .select(
    'Post.*',
    Post.relatedQuery('comments').count().as('numberOfComments')
  );

console.log(posts[4].numberOfComments);
...