Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于不等式检查的Firebase数据建模_Firebase_Firebase Realtime Database_Data Modeling - Fatal编程技术网

用于不等式检查的Firebase数据建模

用于不等式检查的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

我一直在用react native&firebase realtime db开发一个移动应用程序,但我遇到了一个数据建模问题

我的应用程序将允许用户对其他用户上传的照片进行投票,并且每个用户将被允许对每张照片进行一次投票。我正在为投票操作提供一个类似tinder的UI。我计划让
用户
照片
在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来说,这似乎不是一个可伸缩的解决方案。