2016-05-05 38 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。 –