2016-05-05 44 views
0

這是我在Firebase中的代碼。如何在Firebase中的保存數據下構造數據

//Create a reference to a Firebase database URL 
Firebase *savedRef2 = [[Firebase alloc] initWithUrl:@"https://example.firebaseio.com/Location_Coordinates"]; 

// Write data to Firebase 

Firebase *postRef2 = [savedRef2 childByAppendingPath: @"LOCATION DATA"]; 
NSDictionary *post1 = @{ 
         @"DATE": dateString, 
         @"Lat": @(location.coordinate.latitude), 
         @"Long": @(location.coordinate.longitude), 
         @"USER": name, 
         }; 
Firebase *post1Ref = [postRef2 childByAutoId]; 
[post1Ref setValue: post1]; 

當用戶點擊保存上的應用程序,數據被保存到我的火力地堡數據的基礎上,但它一直保存爲右側下保存之前的一個新的對象。我怎樣才能讓它保存一次,其餘保存的是第一次保存的數據的孩子?

這是它如何保持保存圖片Current saved data for coordinates.,我不希望它這樣。我怎樣才能使它看起來像這樣2。我正在保存用戶的座標,但它不斷重新創建一個新的'childByAutoId'字符串,我只希望保存的數據位於第一個'childByAutoId'字符串下,並且不要創建新的ID,因此每次用戶座標都會落入一個ID被保存。

更新: 我有不同的用戶提交數據,在那裏的數據是座標。我希望僅在使用'childByAutoID'的一個節點下創建相同的用戶數據,其餘數據(座標)將在該節點下。現在設置的方式是將MULTIPLE節點(childByAutoId)記錄到Firebase中,這使得我很難讀取它,所以這就是爲什麼我需要首先創建一個節點(childByAutoId),其餘的則落在該EACH有人點擊保存。 這是我目前擁有它的方式。 Current這是我多麼希望它Want

+0

ChildByAutoId創建一個新的節點名稱。因此,每次調用[post1 setValue:post1]時,代碼將在LOCATION DATA下創建單獨的子節點。看起來你鏈接的兩個圖像實際上是相同的 - 如果你單擊當前保存的圖像中每個節點名稱旁邊的減號,它將會像圖像2中的那個一樣。所以...代碼似乎在工作 - 可以你澄清這個問題? – Jay

+0

我只想要創建1個新節點,然後將其餘數據歸入該節點。我怎樣才能做到這一點,所以只有1個節點被創建,其餘的都是作爲那個特定新節點的子節點? @Jay –

+0

@CarlosAlan在您寫下的問題中,您希望新創建的節點是第一個創建的節點的子節點 - 它真的是您想要實現的嗎?另外,你的結構和我看起來是一樣的,你提供的代碼創建了圖2中的結構。 – pkacprzak

回答

1

超級簡單!

當用戶對身份驗證Firebase變量進行身份驗證時,會填充其用戶標識。

一般而言,如果您要存儲有關用戶的信息,則可以存儲該數據或將該數據與其uid關聯。

所以,當你想存儲的數據爲每個用戶,將其存儲在一個節點,在父母爲他們的UID

Location_Coordinates 
LOCATION DATA 
    uid_0 
    childByAutoId 
    childByAutoId 
    uid_1 
    childByAutoId 
    childByAutoId 

然後創建引用

Firebase *rootRef = [[Firebase alloc] initWithUrl:@"https://example.firebaseio.com]; 
Firebase *locCoordsRef = [rootRef childByAppendingPath("Location_Coordinates"); 
Firebase *locDataRef = [locCoordsRef childByAppendingPath("LOCATION DATA"]; 

NSString *uid = rootRef.authData.uid 

Firebase *thisUserRef = [locDataRef childByAppendingPath(uid)]; 

NSDictionary *userDataDict = @{ 
         @"DATE": dateString, 
         @"Lat": @(location.coordinate.latitude), 
         @"Long": @(location.coordinate.longitude), 
         @"USER": name, 
         }; 
Firebase *dataRef = [thisUserRef childByAutoId]; 
[dataRef setValue: userDataDict]; 
+0

你是男人!謝謝Jay。 –