gpt4 book ai didi

swift - 在 firebase 中提取不一致的数据

转载 作者:行者123 更新时间:2023-11-30 11:47:09 24 4
gpt4 key购买 nike

我正在开发一个 Firebase 项目,并决定对数据结构进行一些更改。现在,我决定最好在下面的节点中添加一个占位符图像(之前,我使用虚拟图像作为占位符)。有什么办法我仍然可以获得下面的日期吗?并将占位符 URL 添加到另一个结构中?

Structure

所以我想要的是一个数组dates = ["20180203","20180204","20180205"],然后另一个包含placeholders = ["https.googleapis.whateverIsInTheDay80180203 ", "https.dummydefaultimage","https.dummydefaultimage"]

    public func getAvailableDates(spotTitle:String, handler: @escaping (_ dateList:[String])->())
{
var datesList:[String] = []
let formatter = DateFormatter()
formatter.dateFormat = "yyyyMMdd"

let allowedDays = 30

ref.child("ImageLocationDates").child(spotTitle).observe(DataEventType.value, with: { (snapshot) in
if snapshot.childrenCount > 0 {
for mydata in snapshot.children.allObjects as! [DataSnapshot]
{
let date = mydata.key

if date.count == 8 {

let testDate = formatter.date(from: date)
let cal = Calendar.current
let components = cal.dateComponents([.day], from: testDate!, to: cal.startOfDay(for: Date()))
let dateDistance = components.day! // integer of distance between today and date provided
if dateDistance < allowedDays {
if !datesList.contains(convertDate(stringDate: date)){
datesList.insert(convertDate(stringDate: date), at: 0)

}
else {
print("getting duplicate data")
}

}
}
}
handler(datesList)
}
})
}

最佳答案

Firebase 实时数据库中,您可以采用多种方法来构建数据。请记住,您希望数据不要太深。通常我的限制是3倍而不是更多。为了让事情变得简单,您可以标准化和分发数据,其中有时会包含一些重复,但它可以加快查询速度,并减少用户每次下载的数据量。

看下面的三个结构:

(A)

D_street: 
2012491203 :
placeholder: "https://...."
2012491203 :
placeholder: "https://...."
...

(B)

D_street_dates: 
2012491203 : true
2012491203 :
...

D_street_placeholder:
2012491203 : "https://...."
2012491203 : "https://...."
...

(C)

D_street_dates: 
id1 :
date: 2012491203
placeholder: "https://...."
id2 :
date: 2012491203
placeholder: "https://...."
...

根据您的用例,上述每一种结构都可能很棒。在 A 中,您可以按日期(键)查询,一旦获得结果,您实际上也下载了占位符,因为它们是值。

B 中,您仅在查询 D_street_dates 时下载日期,然后您必须执行另一个查询才能从 D_street_placeholder 获取每个日期的占位符。

C中,您可以根据ID或用户ID或日期和占位符都是属性的东西来构造数据,并且每当您查询ID时,您都会获得日期和占位符。

关于swift - 在 firebase 中提取不一致的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48698817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com