Читая документацию по заданной операции документа, мне кажется, что перезапись и слияние означают одно и то же, а именно замену существующих данных новыми. Я не понимаю ...

2
karmstr7 10 Апр 2021 в 00:44

2 ответа

Лучший ответ

При установке и слиянии документ будет создан, если он не существует, и в этом сценарии вызов обновления завершится ошибкой.

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

0
Frank van Puffelen 9 Апр 2021 в 22:58

.set(), по умолчанию будет ПЕРЕЗАПИСАТЬ любой существующий документ, и создаст документ, если он не существует. По умолчанию, если вы НЕ указали поле в своих данных, и существующие данные в этом поле будут УДАЛЕНЫ - входящие данные станут новым ДОКУМЕНТОМ, а все предыдущие поля / данные будут потеряны.

.set() ДОПОЛНИТЕЛЬНО может быть предоставлен объект, одно поле которого - "слияние". ЕСЛИ это поле существует, а ЕСЛИ установлено значение «истина», ТОЛЬКО поля, указанные в новом объекте данных, будут добавлены и / или перезаписаны. Помните, что документы Firestore фактически являются картами, и имена полей должны быть уникальными. Будут добавлены новые поля; существующие поля будут перезаписаны; поля, которые НЕ присутствуют в объекте данных, останутся - следовательно, «слияние».

.update() ТРЕБУЕТ , чтобы документ УЖЕ существовал, и не удастся, если этого не произойдет. По умолчанию он будет ТОЛЬКО писать в поля, указанные в качестве аргументов для .update()

0
LeadDreamer 10 Апр 2021 в 03:49