ios – Firebase Swift – 如何创建子项并将其id添加到另一个ref属性?

前端之家收集整理的这篇文章主要介绍了ios – Firebase Swift – 如何创建子项并将其id添加到另一个ref属性?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
here所述,我想将Book对象存储在单独的ref中,并将其id值存储在User的books属性
  1. Users:
  2. user_id:121jhg12h12
  3. email: "john@doe.com"
  4. name: "John Doe"
  5. profile_pic_path: "https://...".
  6. language: "en"
  7. exp_points: 1284
  8. friends: [user_id]
  9. books: [[book_id,status,current_page,start_date,finish_date]]
  10. badges: [[badge_id,get_date]]
  11.  
  12. Books:
  13. book_id: 3213jhg21
  14. title: "For whom the bell tolls"
  15. author: "Ernest Hemingway"
  16. language: "en"
  17. pages_count: 690
  18. ISBN: "21hjg1"
  19. year: 2007

每当我在应用程序中添加一本书时

  1. self.ref!.child("Books").childByAutoId().setValue(["title": arrayOfNames[0] as! NSString,"author": arrayOfNames[1] as! NSString,"pages_count":arrayOfNames[2] as! NSString])

book对象是在Books ref中创建的,但我想立即将其id添加到User的用户书籍数组中.

可以用一些漂亮的方式完成,而不是查询书籍,检索它的ID并将其添加到数组中吗?

如果不是,查询刚刚创建的对象id的正确方法是什么?

也许我不应该使用AutoId模式并在应用程序中为自己创建每个对象的唯一ID?

解决方法

您可以通过以下方式获取childByAutoId创建的密钥:
  1. let newBookRef = self.ref!
  2. .child("Books")
  3. .childByAutoId()
  4.  
  5. let newBookId = newBookRef.key
  1. let newBookData = [
  2. "book_id": newBookId,"title": arrayOfNames[0] as! NSString,"pages_count":arrayOfNames[2] as! NSString
  3. ]
  4.  
  5. newBookRef.setValue(newBookData)

猜你在找的iOS相关文章