如何在不编写任何实际数据的情况下从FIrebase REST API获取新的ChildByAutoID

时间:2018-02-22 21:50:32

标签: rest firebase firebase-realtime-database

在Swift中,我可以使用Firebase API执行以下操作,以获取Firebase生成的新ID:

let newListingRef = self.ref!.child("listings").child(location).childByAutoId()

let newBookId = newListingRef.key

然后我使用此ID为我上传到Firebase存储的图片创建文件名。

我正在尝试使用REST API执行相同操作,我知道如何使用POST请求将数据上传到给定位置,但有没有办法使用REST API复制上述行为?

更新:

        let location = locationTextField.Text
        let url = "https://proj_id.firebaseio.com/listings/"
        let random = "grjirjgrirj"
        let postfix = ".json"
        let slash = "/"
        let strings = [url;location;slash;random;postfix]
        let url = System.String.Concat(strings)
        let req = WebRequest.Create(Uri(url)) 
        req.Method <- "POST"
        req.ContentLength <- int64(0)
        req.ContentType <- "application/json; charset=utf-8"
        let reqStream = req.GetRequestStream() 
        reqStream.Close()
        use resp = req.GetResponse() 
        use stream = resp.GetResponseStream() 
        use reader = new IO.StreamReader(stream) 

结果URL如下:

https://proj_id.firebaseio.com/listings/London/grjirjgrirj.json

1 个答案:

答案 0 :(得分:2)

如果您只想要推送ID(在其他Firebase SDK中更为常见),并且后面没有数据,请在已知不存在的位置使用空对象执行POST:

curl -X POST -d '{}' 'https://your-project.firebaseio.com/definitely/doesnt/exist.json'

它不会对您的数据库进行任何更改,并会在JSON响应中返回一个推送ID,稍后您可以使用它来添加实际数据。