Firestore:在 Web v9 中添加新数据的模式是什么?

Chr*_*upt 5 javascript firebase google-cloud-firestore

我在很多地方看到,要访问嵌套文档和集合,模式类似于db.collection("users").doc("frank").collection("pets")等。

这对我来说很有意义并且很容易理解。麻烦的是,我的(React)项目是以Web版本9的方式设置的。我一遍又一遍地梳理文档,除了在 Y 集合中引用 X 文档之外看不到任何内容。

我需要引用 Users > uid > someCollection

但在Web Version 9中我只能这样做:doc(db, "users", uid)

我怎样才能更深入?

Dha*_*raj 18

如果您想获得:

  • CollectionReference 然后使用collection()
const myCol = collection(db, "collection", "doc1", "sub-col1")
Run Code Online (Sandbox Code Playgroud)
const myDoc = doc(db, "collection", "doc1", "sub-col1", "sub-doc1")
Run Code Online (Sandbox Code Playgroud)

这个概念保持不变。文档的路径有偶数个段,例如col/doc/sub-col/sub-doc,而集合的路径有奇数个,例如col/doc/sub-col

如果传递的参数数量无效,这两种方法都会抛出错误。


在名称空间版本(v8)中,它曾经看起来像:

const myCol = collection(db, "collection", "doc1", "sub-col1")
Run Code Online (Sandbox Code Playgroud)

本质上,您不断向相同doc()collection()方法添加路径段。

const myDoc = doc(db, "collection", "doc1", "sub-col1", "sub-doc1")
Run Code Online (Sandbox Code Playgroud)

扩展运算符的示例:

// DocumentReference
firebase.firestore().doc("col/doc/sub-col/sub-doc")

// CollectionReference
firebase.firestore().collection("col/doc/sub-col")
Run Code Online (Sandbox Code Playgroud)

spread operator如果使用with ,请确保没有任何前导或尾随斜杠split()