【问题标题】:Get document id From Firestore Swift从 Firestore Swift 获取文档 ID
【发布时间】:2019-07-04 19:57:53
【问题描述】:

我正在尝试通过执行如下查询从Firestore 获取文档 ID:-

func updateStatusInFirestore() {

let orderid = saleOrder.first?.Orderid ?? ""
print(orderid)
let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
 self.db.collection("SaleOrders").whereField("orderid", isEqualTo: "\(orderid)").getDocuments { (snapshot, err) in

    if let err = err {
        print("Error getting documents: \(err)")
    } else {
        for document in snapshot!.documents {
            self.documentid = document.documentID
            print(self.documentid)
        }
    }
}

}

我从我的模型类中获取订单 ID,它正在打印订单 ID 的值,但是当我尝试将其放入 whereField 查询时,它没有执行查询,我没有得到任何结果在我的控制台中。

如果我这样使用它就可以工作

self.db.collection("SaleOrders").whereField("orderid", isEqualTo: "ji20190205091948").getDocuments

但是当我这样使用时

let orderid = saleOrder.first?.Orderid ?? ""
self.db.collection("SaleOrders").whereField("orderid", isEqualTo: "\(orderid)").getDocuments

它不工作。我在做什么错了。请帮忙?

【问题讨论】:

  • orderId 已经是String 不写"\(orderid)" 只写self.db.collection("SaleOrders").whereField("orderid", isEqualTo: orderid).getDocuments
  • 我试过了,但是不行
  • 哦,好吧,这是可选的。所以像guard let orderid = saleOrder.first?.Orderid else { return } 一样解开它,然后做self.db.collection("SaleOrders").whereField("orderid", isEqualTo: orderid).getDocuments
  • 还是一样不工作:(
  • 打开包装后是否打印相同的值?我没有看到问题的任何其他原因\

标签: ios swift google-cloud-firestore


【解决方案1】:

我解决了这个问题。我们只需要添加一个if 条件即可从Firestore 获取该特定集合的documentId

for document in snapshot!.documents {

  if document == document {
   print(document.documentID)
     }
       }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 2021-07-22
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多