如何将autoID保存到创建的孩子?

问题描述:

我已阅读了许多关于将数据写入Firebase数据库的文章。但是,他们都不能解决我的问题。如何将autoID保存到创建的孩子?

我用autoID创建了一个对象,但是稍后要删除它,我需要创建对象的autoID。出于这个原因,我需要将autoID保存到该对象。它只是没有解决。

下面是代码:

@IBAction FUNC保存(_发件人:任意){

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仍然是空的。

感谢您的帮助。

+0

,在完成处理程序中,您将获得一个'authData'对象。这个对象包含一个唯一的ID e,g'authData.uid'。该ID表示用户的电子邮件地址的散列值。您可以在用户使用用户名和密码登录您的应用后获得此uid值,然后稍后使用它来编写/读取/更新Firebase数据库。因此,您的Firebase数据库应该如下所示:用户/用户在客户登录时收到的uid以及您在数据库中保存的其他对象。 – bibscy

+0

感谢您的回答。但是我没有'用FIRAuth创建我的对象。我想使用自动ID或创建类似的东西,我可以保存。我desperatly需要该ID能够从数据库中删除它们! – AlexVilla147

+0

我能看到的唯一解决方案是查询数据库,获取所有对象,然后选择要显示和删除的对象。否则,你不能检索你不知道的东西。 Firebase树是键值对的JSON对象。你的密钥是生成的自动识别码,所以你不能得到你不知道的密钥的值。想想这样,我躲在我背后2个苹果,一个是读,另一个是绿色。你怎么能得到青苹果? 1你问我向你展示双手(你查询数据库并获得关键值对)2.你知道我手中有绿色/红色。希望这是有道理的 – bibscy

不知道这是否能帮助你+我有点迟到的答案,但你可以得到和保存自动识别这样的:

let randomID = Database.database().reference().childByAutoId() 
print(randomID.key) 
只要您注册使用的FIRAuth类的应用,用户
+0

感谢您的迟交答案,我刚刚在几天前也看到了这种方法,不过谢谢! – AlexVilla147