使用Firebase抓取密钥

时间:2017-05-09 02:38:36

标签: firebase firebase-realtime-database ionic2 angularfire2

我目前正在使用ionic2和firebase为一个类创建一个应用程序,但我遇到了一个问题。 我没有发布代码,因为我没有足够的相关问题。

在我的数据库中,我有一个人们可以创建的“组”。我需要'group'才能存储用户列表。我目前正在这样做的方式是用户将单击addGroup按钮,只需键入组的名称,currentUser就会被添加到该组中的用户列表中。 (是的,我知道以后需要密码或类似的东西,人们显然不应该只能通过组名加入)

*组的名称将全部不同,因此我应该能够使用它查询数据库并获得单个参考点。 问题是我不知道如何正确查询数据库并获取我想要的组对象的键值。

我一直在寻找东西,无法找到一种简单的方法来获取对象的密钥。我觉得这是一个愚蠢的问题但是,我不熟悉打字稿,firebase和ionic2,所以我在所有事情上都很丢失。

2 个答案:

答案 0 :(得分:0)

首先,定义您的数据库结构。以下可能是最好的:

groups
  <first group> (Firebase-generated ID)
    name: "Cat lovers"
    users: 
      user1ID: true
      user2ID: true
  <second group>
    ...

我假设当用户点击他想要加入的群组时,您就知道群组ID。例如,它可能是valueoption的{​​{1}}。

获取群组列表:

select

将组列表填充到选择中:

groups$ = this.angularFireDatabase.list('groups');

创建新组:

<select>
  <option *ngFor="let group of groups$ | async" [value]="group.$key">
    {{group.name}}
  </option>
</select>

选择(下拉列表)将自行更新。

将用户添加到群组:

groups$.push({name: "Dog lovers"})

根据名称查找群组:

addUserToGroup(groupId, userId) {
  this.angularFireDatabase.list(`groups/${groupID}/users`).update(userID, true);
}

答案 1 :(得分:0)

回答评论中的问题。 你可以像这样查询数据库

this.group_val:any="group1"
let group=db.list('/groups', {
  query: {
    orderByChild: GroupName, //here specify the name of field in groups
    equalTo: this.group_val  //here specify the value u want to search
  }
});

group.subscribe(grp=> {
          //you can use the grup object here
})