因此,我在Hasura中为我的GraphiQL创建了此查询,这将获取所有用户数据,它旨在包括分析和跟踪表中其他数据的总量/计数,其中用户的id等于分析和跟踪表中的user_id
query getAllUsersData {
users {
id
username
bio
first_name
last_name
banner
profile_image_url
created_at
followers: follow_aggregate(where: {user_id: {_eq: id}, is_follow: {_eq: 1}}) {
aggregate {
count: count
}
}
visits: analytics_aggregate(where: {user_id: {_eq: id}, type: {_eq: "visit"}}) {
aggregate {
count: count
}
}
shares: analytics_aggregate(where: {user_id: {_eq: id}, type: {_eq: "share"}}) {
aggregate {
count: count
}
}
}
}
这里的问题是,由于follow_aggregate
和analytics_aggregate
,我无法运行它,它给我一个错误Cannot query field "follow_aggragate" and "analytics_aggregate" on type "users".
我正在尝试通过Hasura的项目 Jmeter 板这一点,我已经检查了从Hasura的这方面的文档,我仍然真的很缺乏。希望有人会引导我到这一点,真的很感激提前谢谢你。
我已经做了我的研究,寻找聚集的步骤,也寻找其他方法.
我尝试输出的是:
{
users:
{
userdatahere..
followersinthere,
visitsinthere,
sharesinthere
},
{
userdatahere..
followersinthere,
visitsinthere,
sharesinthere
},
}
或者让我给予你一个简单的结构,但是SQL:
SELECT u.id, u.username, u.bio, u.first_name, u.last_name, u.banner, u.profile_image_url, u.created_at,
COUNT(f.user_id) AS followers,
SUM(CASE WHEN a.type = 'visit' THEN 1 ELSE 0 END) AS visits,
SUM(CASE WHEN a.type = 'share' THEN 1 ELSE 0 END) AS shares
FROM user u
LEFT JOIN follow f ON u.id = f.user_id
LEFT JOIN analytics a ON u.id = a.user_id
GROUP BY u.id
**更新1/8/2023:**我也试过这个方法(是数组关系):
- Database Table Users relationship to other tables
- Here's the column of the users table
- And this is the output users table + links table现在唯一的问题是如何用schema graphiql实现它
1.我设置了外键
1.已跟踪未跟踪的外键关系
1.它创造了一系列的关系
1.我再次使用模式,但从follow
改为follows
query getAllUsersData {
users {
id
username
bio
first_name
last_name
banner
profile_image_url
created_at
followers: follows_aggregate(where: {is_follow: {_eq: 1}}) {
aggregate {
count: count
}
}
visits: analytics_aggregate(where: {type: {_eq: "visit"}}) {
aggregate {
count: count
}
}
shares: analytics_aggregate(where: {type: {_eq: "share"}}) {
aggregate {
count: count
}
}
}
}
1条答案
按热度按时间vyswwuz21#
您是否确定
follow
和analytics
关系在您的数据库中配置正确并由Hasura跟踪?您可以通过查看users
表的“relationships”选项卡进行验证。您还需要配置Hasura的权限以允许聚合查询(docs)。
如果您使用的是Hasura Cloud,您可能需要仔细检查是否允许深度至少为2(docs)的查询。
检查所有这些的最简单方法是在Hasura控制台的GraphIQL编辑器中构建查询,它将显示查询中可用的实体。
最后,如果您的关系确实配置正确,您就不需要在查询的
where
子句中包含外键-这是通过查询结构隐含的。希望能帮上忙!