2017-05-09 118 views
0

我目前正在为一个类使用ionic2和firebase创建一个应用程序,并且遇到了问题。 我不会发布代码,因为我没有任何足够的相关问题。使用Firebase抓取密钥

在我的数据库中有一个可以创建的“组”,我需要'组'来存储我目前的做法是用户点击一个addGroup按钮,当前用户将被添加到该用户列表中,只需输入该组的名称(是的,我知道这是需要密码或类似的东西,人们显然不应该只能通过组名来加入)

*组的名称将全部不同,所以我应该能够用这个查询数据库并获得一个单参考点 问题是我不知道如何适应y查询数据库并获取我想要的组对象的键值。

我一直在寻找东西,找不到一个简单的方法来获取对象的关键。我觉得这是一个愚蠢的问题,但我不熟悉打字稿,firebase和ionic2,所以我都迷失在一切。

回答

0

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

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

我假设当用户点击他想加入的组时,就知道组ID。例如,它可以是selectoptionvalue

获取组的列表:

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"}) 

的选择(下拉式)将自行更新。在评论的问题

// Define the shape of a group for better type checking. 
interface Group { name: string; users: {[userId: string]: boolean;}; } 

// Keep local list of groups. 
groups$: FirebaseListObservable<Group>; 
groups: Group[]; 

// Keep an updated local copy of groups. 
ngOnInit() { 
    this.angularFireDatabase.list('groups').subscribe(groups => this.groups = groups); 
} 

function findGroupByName(name) { 
    return this.groups.find(group => group.name === name); 
} 
+0

我已经得到了大部分的工作。有没有办法在不打印清单并让他们点击的情况下获得ID?说,用户输入他们想要加入的避难所名称,然后在打字稿中找到基于名称的组,然后抓住它的关键字,然后更新其用户列表? –

+0

FirebaseListObservable不存在find方法。有什么我需要导入? –

+0

我调用'groups'的组和观察组之间存在冲突。我重命名了前面的'groups $'。 – 2017-05-09 06:27:26

0

答:

将用户添加到组:

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

基础上找到它的名字一组。 你可以这样查询数据库

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 
}) 
+0

如果我添加:limittofirst:1它应该只能得到一个元素吗?我怎样才能得到列表中的一个元素的关键? –