swift显示所有firebase用户的帖子

时间:2017-03-11 03:19:15

标签: ios swift firebase firebase-realtime-database

我需要使用firebase作为后端创建一个UISearchController。我目前在firebase中有两个用户。一个用户发了一个帖子,另一个发了四个帖子。我希望能够搜索我的数据库中的所有书籍的标题(五个)。但是,截至目前,我只能搜索当前用户上传的书籍。下面是我的数据库的样子以及我的代码目前的样子截图。

Here is a screenshot of what my database looks like

git pull

1 个答案:

答案 0 :(得分:2)

您需要一个名为Books的不同父节点: -

现在你的JSON是这样的: -

posts : {
    userID1 : {
       BOOK_11_ID : {.....}
       };

    userID2 : {
       BOOK_21_ID : {.....},
       BOOK_22_ID : {.....},
       BOOK_23_ID : {.....},
       BOOK_24_ID : {.....},
       }
 }

您必须将数据库JSON结构修改为: -

 posts : {

   Users_books :{
    userID1 : {
       BOOK_11 : true  // Value 'true' means that this user 
                      // has subscribed or bought this book or whatever
       };

    userID2 : {
       BOOK_21 : true,
       BOOK_22 : true,
       BOOK_23 : true,
       BOOK_24 : true,
       }
      },

   Books:{
       BOOK_11_ID : {/Book details/};
       BOOK_21_ID : {/Book details/};
       BOOK_22_ID : {/Book details/};
       BOOK_23_ID : {/Book details/};
       BOOK_24_ID : {/Book details/};
       }

 }

修改“预订”部分的安全规则,使所有经过身份验证的用户都可以看到。

{
 "rules" :{

  "Users_books" : {

     ".write" : "auth != null && auth.uid === $uid",  // Will allow only the user to make any change within its node and no-one else
     ".read": "auth != null && auth.uid === $uid"

       },
  "Books" : {
      ".write" : "auth != null",  // Will allow all the users that are authenticated to your app to access every books detail.
      ".read" : "auth != null"
       }
     } 
  }

现在你要做的是: -

1)如果是创建该书的用户;然后将图书详细信息存储在图书 uid 下的父节点“图书”中,并在用户节点中将book_ID的值设置为true。

2)如果数据库都是后端,即你输入它;每当用户订阅或购买书籍时,只需获取该书的uid并在该用户的部分中将其设置为true。

PS :总是扇出数据库;它更容易从它搜索。虽然我很确定你会想在不久的将来存储用户的一些个人细节,所以这只是另一个节点。将其命名为'Users',安全规则与'Users_books'相同,并在'Users'父节点下添加每个用户的详细信息他们的 uid 是他们的关键。