用于不等式检查的Firebase数据建模
我一直在用react native&firebase realtime db开发一个移动应用程序,但我遇到了一个数据建模问题 我的应用程序将允许用户对其他用户上传的照片进行投票,并且每个用户将被允许对每张照片进行一次投票。我正在为投票操作提供一个类似tinder的UI。我计划让用于不等式检查的Firebase数据建模,firebase,firebase-realtime-database,data-modeling,Firebase,Firebase Realtime Database,Data Modeling,我一直在用react native&firebase realtime db开发一个移动应用程序,但我遇到了一个数据建模问题 我的应用程序将允许用户对其他用户上传的照片进行投票,并且每个用户将被允许对每张照片进行一次投票。我正在为投票操作提供一个类似tinder的UI。我计划让用户和照片在firebase上的树看起来像这样,这很简单: { users:{ userId1: { name:'John' surname: 'Doe', voted
用户
和照片
在firebase上的树看起来像这样,这很简单:
{
users:{
userId1: {
name:'John'
surname: 'Doe',
votedPhotos: {
somePhotoId: {
timestamp: 1528836856000
},
somePhotoId2: {
timestamp: 1529363754000
},
...
},
...
},
userId2: {
name:'Johnny'
surname: 'Doerr'
...
},
...
},
photos: {
photoId1: {
url: 'https://a-firebase-storage-url',
owner: {
uid: 'userId1',
fullName: 'John Doe'
},
upvoteCount: 12,
downvoteCount: 8
},
photoId2: {
url: 'https://another-firebase-storage-url',
owner: {
uid: 'userId2',
fullName: 'Johnny Doerr'
},
upvoteCount: 28,
downvoteCount: 4
},
...
}
}
我需要防止用户对自己的照片进行投票,并对一张照片进行多次投票。因此,我需要查询照片,将已投票的照片和用户的自上传照片排除在外。如果我使用的是传统的数据库,那就很简单了,但我不知道如何在firebase实时数据库中进行查询,因为我不能使用
not_equals
或not_in
。您建议我如何对数据建模?在photouid
下记录用户投票。我想,.length
可以为您提供总票数
photos
photo1-uid
owner:user1-uid
votes:{
user2-uid: true,
user3-uid: true
}
这对OP需要执行的查询有何帮助?不需要在用户下有
投票照片分支?换句话说,您可以查询并设置为photos
分支对于这张照片,return votes==user uid
如果有,则false为downvote true为upvote。如果未找到,则表示用户未投票?。。。这就是我所想的。换句话说,false==null
和false==null
都是false
。。。如果这有意义的话-布尔子级提供3个状态,而不仅仅是2个。这是db建模问题的可能解决方案吗?您能编辑您的答案以显示您建议的代码吗?从您的问题听起来,在客户端上进行过滤是不可接受的?不幸的是,对于可伸缩的db来说,这似乎不是一个可伸缩的解决方案。