自动为文档生成 ID,而不是在 firestore 中生成集合

新手上路,请多包涵

我已经浏览了 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)

原文由 Urchboy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 318
2 个回答

如果您正在使用 CollectionReference 的 add() 方法,则意味着它:

将指定的 POJO 作为内容添加到此集合中,并自动为其分配一个文档 ID。

如果您想获取生成的文档 ID 并在您的参考中使用它,请使用 DocumentReference 的 set() 方法:

覆盖此 DocumentRefere 引用的文档

就像在下面的代码行中一样:

 String id = db.collection("collection_name").document().getId();
db.collection("collection_name").document(id).set(object);

原文由 Alex Mamo 发布,翻译遵循 CC BY-SA 4.0 许可协议

现在 firebase javascript API 的 v9 已经出来了,语法发生了一些变化。

 import { collection, addDoc } from "firebase/firestore";

// Add a new document with a generated id.
const docRef = await addDoc(collection(db, "cities"), {
  name: "Tokyo",
  country: "Japan"
});
console.log("Document written with ID: ", docRef.id);

您可以将其包装在 try/catch 块中以处理错误。

总之:

  • 如果你想自动生成一个 ID 使用 addDoc() + collection()
  • 如果要设置 ID,请使用 setDoc() + doc()

原文由 pietz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题