是否有可能在 Objection js 的子子查询中获得总计数?
Is it possible to get total counts in sub-sub queries in Objection js?
例如,我有一个用户,它有 Posts (HasMany) 和 Posts,它有属于 User 和 Post 的 Likes。因此,当我尝试让所有用户都与每个用户相关时,我试图获得每个 post 中的总点赞数。
const users = User.query().withGraphFetched('[posts.[likes, files]]')
.select(['user_table.*', User.relatedQuery('posts').count().as('totalPosts')])
在上面的例子中我得到了总计Posts。没关系,但如果我想获得每个 post 个总赞怎么办?
最终期待这样的事情:
const users = User.query().withGraphFetched('[posts.[likes, files]]')
.select(['user_table.*', User.relatedQuery('posts').innerRelated('likes').count().as('totalLikes')])
并期望输出数组包含如下用户:
[{
id: 9323,
firstName: 'John',
lastName: 'Travolta',
posts: [{
id: 2,
totalLikes: 99,
files: [File],
}],
bio: 'Actor'
}]
所以。找到了解决方案。如何做到这一点:
const users = await User.query()
.withGraphFetched('[web, posts.[likes, files, comments]]')
.modifyGraph('posts', builder => {
builder.select('post_table.*', Post.relatedQuery('likes').count().as('totalLikes'));
});
例如,我有一个用户,它有 Posts (HasMany) 和 Posts,它有属于 User 和 Post 的 Likes。因此,当我尝试让所有用户都与每个用户相关时,我试图获得每个 post 中的总点赞数。
const users = User.query().withGraphFetched('[posts.[likes, files]]')
.select(['user_table.*', User.relatedQuery('posts').count().as('totalPosts')])
在上面的例子中我得到了总计Posts。没关系,但如果我想获得每个 post 个总赞怎么办?
最终期待这样的事情:
const users = User.query().withGraphFetched('[posts.[likes, files]]')
.select(['user_table.*', User.relatedQuery('posts').innerRelated('likes').count().as('totalLikes')])
并期望输出数组包含如下用户:
[{
id: 9323,
firstName: 'John',
lastName: 'Travolta',
posts: [{
id: 2,
totalLikes: 99,
files: [File],
}],
bio: 'Actor'
}]
所以。找到了解决方案。如何做到这一点:
const users = await User.query()
.withGraphFetched('[web, posts.[likes, files, comments]]')
.modifyGraph('posts', builder => {
builder.select('post_table.*', Post.relatedQuery('likes').count().as('totalLikes'));
});