我已经浏览了Firestore文档,但还没有找到一个示例,其中有类似的内容。
collection
|--document
|--{auto-generated-id}
|--property1:value1
|--property2:value2
|--peoperty3:value3
我经常看到的是:
collection
|--{auto-generated-id}
|--property1:value1
|--property2:value2
|--peoperty3:value3
在前一种情况下,我无法在文档上调用add()
-(生成唯一ID)。但是,可以在集合中完成此操作,如上面的后一个草图所示。
因此,我的问题是: Firestore是否有办法在创建文档后帮助自动生成ID 即 我如何实现这样的目标:
db.collection("collection_name").document("document_name").add(object)
答案 0 :(得分:4)
如果您使用的是CollectionReference的add()方法,则意味着:
使用指定的POJO作为内容向此集合添加一个新文档,并自动为其分配一个文档ID。
如果要获取生成的文档ID并在引用中使用它,请使用DocumentReference的set()方法:
覆盖此DocumentRefere引用的文档
就像下面的代码行一样:
val pyScript = "wasb://scripts@myAccount.blob.core.windows.net/print.py"
val pyScriptName = "print.py"
spark.sparkContext.addFile(pyScript)
val ipData = sc.parallelize(List("abc","def","ghi"))
val opData = ipData.pipe(org.apache.spark.SparkFiles.get(pyScriptName))
opData.foreach(println)
答案 1 :(得分:1)
要在 Flutter/dart 中实现这一点,您可以将 Future 设为 1。 在 firestore 中创建文档(firestore 会自动为文档生成 ID),2).< /strong>然后调用创建的文档,3).最后显示id OR更新ID字段
Future createPost(PostModel postModel) async {
_firestore.collection("posts").add({
"pid": postModel.pid, // Creating a field for post ID
}).then((querySnapshot) { // Here whe call the document just after creation
String generatedID = querySnapshot.id.toString(); // Here we call the ID of the document
print("ID OF CREATE POST: " + generatedID); // Here we display the generated document ID
querySnapshot.update({ // Here we update the pid(Post ID) field in the new generated document
"pid": generatedID
});
});
}
答案 2 :(得分:0)
由于您已经知道文档的ID,因此只需调用set()
而不是add()
。如果尚不存在,它将创建文档。
答案 3 :(得分:0)
这个答案可能有点晚了,但是您可以在这里查看下面的代码,它将生成一个新的文档名称:
// Add a new document with a generated id.
db.collection("cities").add({
name: "Tokyo",
country: "Japan"
})
.then(function(docRef) {
console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
console.error("Error adding document: ", error);
});
让Cloud Firestore为您自动生成ID更方便。您可以致电add()
答案 4 :(得分:0)
当您将文档添加到集合中时,响应对象将包含创建的文档的 id。所以你可以在javascript中解构响应对象,直接使用这个id。
(async () => {
const dataObject = YOUR_DATA;
const { id } = await firebase.firestore().collection("YOUR_COLLECTION_NAME").add(dataObject);
console.log(id); //the newly added doc's id
})()