Firestore (Angularfire) «объединить» или ссылаться на один документ в другом - PullRequest
1 голос
/ 02 ноября 2019

У меня есть сценарий использования, в котором у меня есть DI документа в коллекции A с некоторыми полями. И когда все необходимые поля заполнены и документ сохранен, мне нужно создать документ DV в коллекции B.

Этот документ DV должен брать поля из документа DI, но у него также есть другие поля.

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

Может ли Firestore сделать это? Или я должен сделать это сам, проверяя изменения и обновляя их оба?

1 Ответ

2 голосов
/ 08 ноября 2019

Firestore сам по себе не будет автоматически зеркально отображать поля между двумя документами.

Однако у вас есть как минимум 3 варианта:

  • Вы можете вручную зеркалировать данные -- когда вы пишете в один документ, пишите в оба. Вы можете использовать пакетные записи (или транзакции), чтобы убедиться, что они приземляются атомарно.
  • Вы можете использовать триггер облачной функции для автоматического зеркалированияданные (с некоторой задержкой, а также дополнительными затратами на запись, хранение и вызовы функций - но, конечно, вам не придется читать несколько документов для доступа к данным). Обратите внимание, что упорядочение не гарантируется для триггеров.
  • Вы можете сохранить ссылку на второй документ в поле первого (например, поле ссылки ), чтобы указать вам наВторой документОднако для доступа к этой ссылке вам все равно потребуется второе чтение. Подробнее в этом ответе .
...