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

时间:2018-06-17 23:31:33

标签: firebase firebase-realtime-database data-modeling

我一直在开发一款带有原生和反应的移动应用程序。 firebase实时数据库,我遇到了数据建模问题。

我的应用会让用户投票给其他用户上传的照片,每个用户都可以为每张照片投票一次。我为投票行动提供了类似火种的用户界面。我计划让firebase上的usersphotos树看起来像这样,这很简单:

{
  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 }}。您如何建议我对数据进行建模?

1 个答案:

答案 0 :(得分:0)

photouid下记录用户投票。我想.length可以为你提供总票数。

photos
  photo1-uid
    owner:user1-uid
    votes:{
      user2-uid: true,
      user3-uid: true
    }