【发布时间】:2016-04-10 20:53:32
【问题描述】:
在 Firebase 中,我们可以像这样创建一个新对象:
Firebase *postRef = [ref childByAppendingPath: @"posts"];
NSDictionary *post1 = @{
@"author": @"gracehop",
@"title": @"Announcing COBOL, a New Programming Language"
};
Firebase *post1Ref = [postRef childByAutoId];
[post1Ref setValue: post1];
并且此新帖子可能会保存在类似以下网址:http://app.firebaseIO.com/posts/$postuid
稍后当用户在某个UIViewController 中查看帖子时,我们可能想要发表评论。然而,为了发表评论,我们需要访问帖子的 uid。似乎唯一可行的方法是将 uid 保存到我们的 post 对象中?
一般来说,将对象的 uid 存储在其中是最佳实践吗?
【问题讨论】:
-
一般来说,Firebase 中的 uid 将引用用户 uid,从 authData.uid 获得。在这种情况下,您是否应该将用户 uid(可能是发布它的用户的 uid)存储为 post1Ref 的子项?
-
@Jay 我指的是
uid更一般地作为唯一标识符。 -
不要 :-) 这确实会引起混淆,除非您专门指的是通过 Firebase 身份验证方法分配的 authData.uid。唯一标识符将被称为父节点或可能是键。在这种情况下,答案是否定的,您不需要将唯一标识符(密钥)也存储在节点内,因为它始终可以从 snapshot.key 中获取。当然值也是 snapshot.value。可能有一些特殊情况需要存储在节点内,但一般不需要。
-
听起来是个不错的答案@Jay!
标签: ios firebase firebase-realtime-database