【问题标题】:How to save the autoID to the created child?如何将autoID保存到创建的孩子?
【发布时间】:2017-07-17 09:29:11
【问题描述】:

我在这个网站上阅读了很多文章,这些文章主要关注将数据写入 Firebase 数据库。但是,它们都不能解决我的问题。

我创建了一个带有 autoID 的对象,但是稍后要删除它,我需要我创建对象时使用的 autoID。出于这个原因,我需要将 autoID 保存到该对象。它只是行不通。

代码如下:

@IBAction func Save(_ sender: Any) {

    let Town = Stadt.text
    let surface = Untergrund.text
    let size = Groesse.text
    let numberof = AnzToreKoerbe.text
    let laenge = longitudeLabel.text
    let breite = latitudeLabel.text
    let street = Strasse.text
    let Art = Platzart.text
    var PlatzID = ""


    var upload : [String : AnyObject] = ["Platzart": Art as AnyObject,
                                         "Laengengrad" : laenge as AnyObject,
                                         "Breitengrad" : breite as AnyObject,
                                         "Stadt" : Town as AnyObject,
                                         "Strasse" : street as AnyObject,
                                         "Untergrund" : surface as AnyObject,
                                         "Groesse" : size as AnyObject,
                                         "AnzahlToreKoerbe" : numberof as AnyObject,
                                         "PlatzID" : PlatzID as AnyObject]


    ref?.child("Sportplatz").childByAutoId().setValue(upload)

    PlatzID = (ref?.key)!

    ref?.updateChildValues(["PlatzID" : PlatzID as AnyObject])

按照某些文章的推荐,我已尝试保存密钥,然后使用该密钥更新子“PlatzID”。 当我创建一个新对象时,PlatzID 仍然是空的。

感谢您的帮助。

【问题讨论】:

  • 每当您使用 FIRAuth 类在您的应用中注册用户时,在完成处理程序中您将获得一个 authData 对象。该对象包含一个唯一 ID,例如 authData.uid。此 ID 表示用户电子邮件地址的哈希值。您可以在用户使用用户名和密码登录您的应用程序后获取此 uid 值,然后稍后使用它来写入/读取/更新您的 Firebase 数据库。因此,您的 Firebase 数据库应如下所示:用户/客户登录时收到的 uid/以及您保存在数据库中的其他对象。
  • 感谢您的回答。但是我还没有使用 FIRAuth 创建我的对象。我想使用自动 ID 或创建类似的东西,我可以保存。我迫切需要该 id 才能从数据库中删除它们!
  • 我能看到的唯一解决方案是查询数据库,获取所有对象,然后选择要显示和删除的对象。否则,您将无法检索您不知道的内容。 Firebase 树是键值对的 JSON 对象。您的密钥是生成的 autoID,因此您无法获取您不知道的密钥的值。这么想,我背后藏了2个苹果,一个是读的,一个是绿色的。你怎么能得到青苹果? 1 你让我向你展示双手(你查询数据库并获取键:值对) 2. 你知道我在哪只手上有绿色/红色的那只手。希望有意义

标签: ios firebase swift3 firebase-realtime-database


【解决方案1】:

不确定这是否可以帮助您+我的答案有点晚了,但是您可以像这样获取并保存 autoID:

let randomID = Database.database().reference().childByAutoId()
print(randomID.key)

【讨论】:

  • 感谢您迟到的回答,我几天前也看到了这种方法,但还是谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
相关资源
最近更新 更多