有没有办法检查字段值的格式并在firebase集合中执行操作?

时间:2020-07-13 17:45:06

标签: swift firebase google-cloud-firestore

背景

当前,我正在使用查询获取集合中的所有文档,并通过相对于字段中的字段值( 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()
                }
            }

0 个答案:

没有答案