2017-05-09 120 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它應該只能得到一個元素嗎?我怎樣才能得到列表中的一個元素的關鍵? –