【发布时间】:2022-10-19 14:33:25
【问题描述】:
我需要有关从 PostgreSQL 数据库查询数据的帮助。目前在客户端,这是发送到服务器的查询:
await Supabase.instance.client
.from('books')
.select('''*,BookBy:authors(*), likes(likedBy), totalLikes:likes(count)''')
.match({'likes.likedBy': loggedInUserUid,'category': categoryId})
.order('id');
此查询当前以以下结构返回数据:
[{
'id': 1,
'title':'...',
'Description': '...',
'Published Date':'...',
'categoryId':'3',
'BookBy':{
'id': 1,
'Author':'...',
'Bio':'...',
'Picture':'...'
},
'likes':{'likedBy':'...'},
'totalLikes':{'count':30},
}]
通过使用 match 语句,它获取与提供的 categoryId 匹配的所有书籍。 另外,我这里的主表是书籍和(作者,喜欢)表是外来的,“totalLikes”用作别名来查询同一个外来“喜欢”表的计数。
我现在想弄清楚的是如何按受欢迎程度查询书籍。
因此,当检索数据时,它是按每本书的点赞数排序的。
当前获取顺序:
Ex: Book id 1, 50 likes
Book id 2, 60 likes
Book id 3, 20 likes
Book id 4, 30 likes
Book id 5, 25 likes
预期获取顺序:
EX: Book id 2, 60 likes
Book id 1, 50 likes
Book id 4, 30 likes
Book id 5, 25 likes
Book id 3, 20 likes
我不知道这是否应该在客户端查询,或者我是否应该编写一个数据库函数来处理这个问题。如果是后一种选择,那么我将不胜感激有关如何做到这一点的任何指导,因为我对 PostgreSQL 数据库还很陌生。
【问题讨论】:
标签: database postgresql flutter supabase