如何使Firestore在写时将嵌套对象作为子集合创建?

use*_*286 3 firebase google-cloud-firestore

考虑下面的代码。我希望这段代码在收集测试下创建一个称为项的子集合,但是正确的是,这些项在测试收集中添加了一个数组字段。请注意,这是针对Firestore而非Firebase实时数据库。

data = {
"first": "new",
"born": 1815,
"items": [
  {
    "field": 2
  }
 ]
};
db.collection("test").add(data)
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 6

您的data对象是单个对象,使用您提供的代码将单个对象存储为文档时,该对象将占据该单个文档。

如果要向子集合写入数据,则必须单独编写数据,API非常清楚您要在其下面创建子集合:

db.collection("test")
    .document("doc_id")
    .collection("items")
Run Code Online (Sandbox Code Playgroud)

要么:

db.collection("test/doc_id/items")
Run Code Online (Sandbox Code Playgroud)

换句话说,如果要编写任何两个文档,则必须在不同位置执行两个添加/更新/创建调用。您不能一次调用两个文档。

  • 您至少可以使用[批次](https://firebase.google.com/docs/firestore/manage-data/transactions) 进行同步更新。 (2认同)