【发布时间】:2019-06-15 12:19:25
【问题描述】:
如何将刚刚添加到 Firestore 数据库的文档的文档 ID 添加到所述文档?
我想这样做,以便当用户检索“乘车”对象并选择预订时,我可以知道他们预订了哪个具体的乘车。
我面临的问题是,在创建文档 ID 之前,您无法获取文档 ID,因此将其添加到所述文档的唯一方法是创建一个文档,读取其 ID,然后编辑该文档添加ID。在规模上,这将创建两倍于所需的服务器调用。
有没有标准的方法来做到这一点?还是一个简单的解决方案来了解用户预订了哪个“骑行”并在数据库中进行相应的编辑?
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.
}
}
}
【问题讨论】:
标签: ios swift firebase google-cloud-firestore