Как добавить вложенную коллекцию в документ в Firestore? - PullRequest
0 голосов
/ 07 мая 2020

Текущий код

// items is an array.
// Array [
    Object {
      "id": "KQJfb2RkT",
      "name": "first",
    },
    Object {
      "id": "1mvshyh9H",
      "name": "second",
    },
  ]

storeSale = async ({ items }) => {
  this.salesCollection.add({
    status: 1,
    created_at: new Date(),
    updated_at: new Date(),
  });
};

При добавлении документа в SalesCollection я хочу добавить элементы в этот документ как вложенную коллекцию.

Буду признателен, если вы мог бы дать мне любые советы.

Я бы хотел сэкономить вот так. введите описание изображения здесь

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете использовать пакетную запись следующим образом:

// Get a new write batch
let batch = db.batch();

// Set the value of parent
const parentDocRef = db.collection("parentColl").doc();
batch.set(parentDocRef, {
    status: 1,
    created_at: new Date(),
    updated_at: new Date(),
  });

//Set the value of a sub-collection doc

const parentDocId = parentDocRef.id;

const subCollectionDocRef = db.collection("parentColl").doc(parentDocId).collection("subColl").doc();
batch.set(subCollectionDocRef, {
    ...
  });

// Commit the batch
await batch.commit();

Один ключевой момент, на который следует обратить внимание: на самом деле, с технической точки зрения, родительская коллекция и подчиненная -коллекции документов в этой родительской коллекции никак не связаны друг с другом .

Давайте возьмем пример: Представьте себе документ doc1 в коллекции col1

col1/doc1/

и еще один subDoc1 в subCol1 (под) коллекции

col1/doc1/subCol1/subDoc1

Эти два документа (и две непосредственные родительские коллекции, т.е. col1 и subCol1 ) просто разделяют часть своего пути, но ничего больше.

Одним из побочных эффектов этого является то, что если вы удалите документ, его подгруппы все еще будут существовать.

...