2017-08-29 24 views
0

當我將新節點添加到Firebase實時數據庫時,存在一些問題。當我添加一個孩子時,我收回了一些數據,但問題是我檢索了密鑰和1個值,但總共有2個值。Childadded檢索一個鍵

我有以下結構:

-- groups 
    -- id 
     -- members 
     -- id 
      --device_name 
      --device_type 

我觀察會員的孩子。我想在添加該子項時檢索id和下層元素(device_name,device_type)。

我做這個代碼:

let ref = Database.database().reference().child("groups").child(roomObject.getAutoChildId()).child("members"); 
    ref.observe(.childAdded, with: { (snapshot) in 
    print(snapshot.debugDescription) 
}) 

但現在的問題。 snapshot.debugDescription不是返回該快照中的所有值。例如:

Snap (ooDpijaPrKgcBA70LUXYbpohvi42) { 
    "device_name" = test; 
} 

device_type鍵不存在,我不知道爲什麼。我需要這樣的:

Snap (ooDpijaPrKgcBA70LUXYbpohvi42) { 
    "device_name" = test; 
    "device_type" = test; 
} 

新增結構:

enter image description here

+0

你可以顯示你的firebase數據庫的截圖嗎? – 3stud1ant3

+0

@ 3stud1ant3我添加了屏幕截圖。 – da1lbi3

+0

如果只添加打印(快照),那麼輸出是什麼? – 3stud1ant3

回答

2

我發現發生了什麼事情錯了。它與.childAdded無關,該部分工作正常。

插入時出錯。我所做的是以下幾點:

let insertRef = reference.child("groups").child(roomKey).child("members").child(roomCodeArray[1]) 
    insertRef.child("device_name").setValue(roomCodeArray[2]) 
    insertRef.child("device_type").setValue(roomCodeArray[3]) 

但火力是如此刻着快,插入設備名時,其他設備檢索onchildChanged事件。此時不添加設備類型。

我的解決辦法:

let childInsert = [ 
        "device_name" : roomCodeArray[2], 
        "device_type" : roomCodeArray[3] 
        ] 

insertRef.setValue(childInsert) 

同時插入值。然後它就像魔術一樣工作。