我目前正在使用ionic2和firebase为一个类创建一个应用程序,但我遇到了一个问题。 我没有发布代码,因为我没有足够的相关问题。
在我的数据库中,我有一个人们可以创建的“组”。我需要'group'才能存储用户列表。我目前正在这样做的方式是用户将单击addGroup按钮,只需键入组的名称,currentUser就会被添加到该组中的用户列表中。 (是的,我知道以后需要密码或类似的东西,人们显然不应该只能通过组名加入)
*组的名称将全部不同,因此我应该能够使用它查询数据库并获得单个参考点。 问题是我不知道如何正确查询数据库并获取我想要的组对象的键值。
我一直在寻找东西,无法找到一种简单的方法来获取对象的密钥。我觉得这是一个愚蠢的问题但是,我不熟悉打字稿,firebase和ionic2,所以我在所有事情上都很丢失。
答案 0 :(得分:0)
首先,定义您的数据库结构。以下可能是最好的:
groups
<first group> (Firebase-generated ID)
name: "Cat lovers"
users:
user1ID: true
user2ID: true
<second group>
...
我假设当用户点击他想要加入的群组时,您就知道群组ID。例如,它可能是value
中option
的{{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
})