Проблема здесь в том, что у нас нет возможности узнать текущее значение любого из этих полей.
Если вы знаете текущее значение, вы можете сравнить текущее и новое значения и отправить его только в базу данных, если они не совпадают.
Если вы не знаете текущее значение, загрузка текущего значения, вероятно, будет более затратной, чем просто отправка всех трех полей в базу данных.
Причина в том, что Firebase взимает плату за (в этом сценарии):
- записи документов - каждый документ, который вы изменяете, требует затрат, но эта стоимость не зависит от количества данных, которые вы обновляете в этом документе.
- документ читает
- пропускная способность данных, считываемых клиентом
Таким образом, Firestore не взимает плату за пропускную способность за данные, которые вы отправляете в базу данных. Таким образом, хотя отправка только измененных полей может сэкономить пропускную способность, это не приведет к сокращению затрат Firebase на этом фронте, в то время как необходимость читать документ, чтобы определить, какие поля были изменены, определенно будет стоить дороже.