Считается ли Firestore batch.set() для одного и того же документа записью одного документа?

#firebase #google-cloud-platform #google-cloud-firestore

#firebase #google-облачная платформа #google-cloud-firestore

Вопрос:

Если я сделаю это в своем коде

  function setShards(batch, docRef, numShards) {
    batch.set(docRef, { numShards } , { merge: true });
 }

 const batch = firestore.batch();

 batch.set(docRef, {data});
 
 setShards(docRef, 10);

 batch.commit();
  

как вы можете видеть, я создаю batch.set для того же документа, прежде чем выполнять .commit() . Итак, будет ли это учитываться как запись одного документа или как запись двух документов?

Спасибо.

Ответ №1:

batch.set() напрямую не требует записи какого-либо документа. Это просто локальная постановка изменений в очередь перед отправкой в Firestore. Выставление счетов не происходит, пока вы batch.commit() не выполните успешный вызов. На этом этапе вам будет начислено столько записей документа, сколько изменений во всем пакете. Итак, если вы записываете только один документ в пакете, с вас будет взиматься плата за запись документа.

Комментарии:

1. Возможно, я неправильно понимаю, но мне не на 100% ясно, будет ли пакетирование 2 записей в один документ оплачиваться как 2 записи или как 1 запись.

2. @gustavopch Вам выставляется счет за количество документов, измененных в пакете после его фиксации, а не за количество изменений, которые вы выполняете в клиенте. Это то, что говорится в ответе.

3. @gustavopch Это будет выставлено как 1 запись, так как в конечном итоге был изменен только 1 документ.