我如何在刚添加到我的firestore数据库的文档中添加文档ID,以便当用户检索“ride”对象并选择预订时,我可以知道他们预订了哪个特定的ride?
问题在于在创建文档之前无法获取文档ID,因此将其添加到所述文档的唯一方法是创建文档,读取其ID,然后编辑文档以添加ID。 在规模上,这将创建两倍于期望数量的服务器调用。是否有标准方法来解决这个问题?或者是否有简单的解决方案来知道用户预订了哪个“ride”并相应地在数据库中进行编辑?
问题在于在创建文档之前无法获取文档ID,因此将其添加到所述文档的唯一方法是创建文档,读取其ID,然后编辑文档以添加ID。 在规模上,这将创建两倍于期望数量的服务器调用。是否有标准方法来解决这个问题?或者是否有简单的解决方案来知道用户预订了哪个“ride”并相应地在数据库中进行编辑?
struct Ride {
var availableSeats: Int
var carType: String
var dateCreated: Timestamp
var ID: String // How do I implement this?
}
func createRide(ride: Ride, completion: @escaping(_ rideID: String?, _ error: Error?) -> Void) {
// Firebase setup
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
// Add a new document with a generated ID
var ref: DocumentReference? = nil
ref = db.collection("rides").addDocument(data: [
"availableSeats": ride.availableSeats,
"carType": ride.carType,
"dateCreated": ride.dateCreated,
"ID": ride.ID,
]) { err in
if let err = err {
print("Error adding ride: \(err)")
completion(nil, err)
} else {
print("Ride added with ID: \(ref!.documentID)")
completion(ref?.documentID, nil)
// I'd currently have to use this `ref?.documentID` and edit this document immediately after creating. 2 calls to the database.
}
}
}