我一直在开发一款带有原生和反应的移动应用程序。 firebase实时数据库,我遇到了数据建模问题。
我的应用会让用户投票给其他用户上传的照片,每个用户都可以为每张照片投票一次。我为投票行动提供了类似火种的用户界面。我计划让firebase上的users
和photos
树看起来像这样,这很简单:
{
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
或{{1 }}。您如何建议我对数据进行建模?
答案 0 :(得分:0)
在photouid
下记录用户投票。我想.length
可以为你提供总票数。
photos
photo1-uid
owner:user1-uid
votes:{
user2-uid: true,
user3-uid: true
}