objection.js modifyEager .as(‘count’), похоже, ничего не делает для .count()

#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);