我正在尝试将Firestore唯一ID存储在我创建的数据中。我相信在处理完数据后会创建唯一的ID,这就是为什么我的代码下面的结果为nil。这不可能吗?
netstat
这可以通过uuidString以某种方式实现吗?
var ref: DocumentReference? = nil
ref = Firestore.firestore().collection("all_posts").addDocument(data: [
"author": [
"uid": userId,
"username": "John"
],
"PostId": ref!.documentID,
]) { (err) in
if let err = err {
print(err)
答案 0 :(得分:2)
在这种情况下,您需要:
document()
创建对新文档的引用。如果您查看adding a document上的文档中的第三个代码段,可以使用以下方法完成:
var ref: DocumentReference? = nil
ref = Firestore.firestore().collection("all_posts").document()
ref.setData((data: [
"author": [
"uid": userId,
"username": "John"
],
"PostId": ref!.documentID,
]) { (err) in
if let err = err {
print(err)
答案 1 :(得分:1)
您可以生成自己的唯一ID:
let uuid = UUID().uuidString
let data: [String: Any] = [
"author": [
"uid": userId,
"username": "John"
],
"PostId": uuid
]
Firestore.firestore().collection("all_posts").document(uuid).setData(data, merge: true) { (error) in
if let error = error {
print(error)
}
}
或者让Firestore生成唯一的ID:
let docRef = Firestore.firestore().collection("all_posts").document()
let docId = docRef.documentID
let data: [String: Any] = [
"author": [
"uid": userId,
"username": "John"
],
"PostId": docId
]
docRef.setData(data, merge: true) { (error) in
if let error = error {
print(error)
}
}
setData(merge: true)
将创建该文档(如果尚不存在),并将其合并到其中。当然,您可以直接添加文档而无需这种安全网。而且,由于这些值都不是可选的,因此您也可以采用功能性方法而不使用变量和nil。