背景:
当前,我正在使用查询获取集合中的所有文档,并通过相对于字段中的字段值( timestamp )进行排序来按顺序显示它们。文档。
问题:
在我的Firebase数据库集合中,对于我用作排序参数的字段值,有些采用 字符串 格式,有些采用 数字 格式。 -由于无法比较数字和字符串,因此返回错误。
Example of the field-val:
Field Value in Document 1(timestamp): "12345654"
Field Value in Document 2(timestamp): 234234234
[我知道应该在数据库本身中解决此问题,但是有办法吗?]
问题:
是否可以仅对数字格式的内容进行排序并单独显示?就像查询选择了以 number 作为字段值格式的文档并按排序顺序显示它们的查询一样?
当前实施:
safeID = UserDefaults.standard.value(forKey: "safeIDs") as? String ?? ""
self.listener = self.firebaseDatabase.collection("notifications").whereField("safeID", isEqualTo: safeID).order(by: "timestamp", descending: true).addSnapshotListener { snapshot, error in
UIView.transition(with: self.notificationsTableView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.notificationsTableView.isHidden = true
self.loadingIndicator.startAnimating()
}, completion: nil)
DispatchQueue.main.async {
guard let documentSnapshot = snapshot else {
print("Error getting documents: \(error!)")
return
}
self.notifications = documentSnapshot.documents
UIView.transition(with: self.notificationsTableView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.loadingIndicator.stopAnimating()
self.notificationsTableView.isHidden = false
}, completion: nil)
self.notificationsTableView.reloadData()
}
}