【问题标题】:How to retrieve an specific child in Firebase?如何在 Firebase 中检索特定的孩子?
【发布时间】:2023-03-27 16:57:02
【问题描述】:

如果您想在一个节点中保存多个相同类型的子节点,childByAutoId 会很有用,这样每个子节点都有自己的唯一标识符。

pet:{
    KJHBJJHB:{
      name:fluffy,
      owner:John Smith,
    },
    KhBHJBJjJ:{
      name:fluffy,
      owner:Jane Foster,
    }
} 

因此,一旦我有了该 uID,我想使用他/她的 uID 检索特定用户。如何告诉 Firebase 我想要该特定用户?因为我创建它并将其存储在 Firebase 中,但是要读取它,我不需要知道 uID 的值吗?我从哪里得到它?

例如,我使用什么函数来检索使用 uID 的第二个用户?

提前谢谢..

【问题讨论】:

  • 标题与正文不匹配....您不关心uid的值,但您想过滤掉所有所有者= XY的孩子,对吗?
  • 我只需要过滤一个特定的用户。我想要做的是,当从 tableView 中选择用户来更新个人资料信息时,我需要从该特定用户那里检索所有信息并更新它。但是,如果路径包含密钥,我如何获取该特定用户的路径?如果我想联系该特定用户,我需要再次获得该密钥,对吗?这样我就可以使用唯一 ID 进行查询

标签: ios objective-c firebase


【解决方案1】:

在标题中你问如何摆脱这样:: 获取新 ref 的 key 属性以创建辅助

FIRDatabaseReference *ref = parent.childByAutoID
NSString *uid = ref.key

但这不是你想要 id 说的,所以:

过滤掉我认为你想要的所有所有者 = XY 的孩子:

FIRDatabaseReference *ref = your pets node 
FIRDatabaseQuery *allPets = [ref queryOrderedByChild:@"owner"];
FIRDatabaseQuery *specificPet = [allPets queryEqualToValue:@"XY"];

[specificPet observeEventType:FEventTypeChildAdded withBlock:^(FIRDataSnapshot *snapshot) {
  NSDictionary *dict = snapshot.value;
  NSString *key = snapshot.key;

  NSLog(@"key = %@ for child %@", key, dict);
}];

见:Query users by name or email address using Firebase (Swift)

【讨论】:

  • 我只需要过滤一个特定的孩子。我试图使用密钥识别那个特定的孩子。但我不知道从哪里获取密钥以便我可以使用 [queryEqualToValue:key]
  • 我很困惑。如果您不知道条件,您将如何过滤元素?
  • 谢谢!真的很有用!
猜你喜欢
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
相关资源
最近更新 更多