Как вы можете создать транзакцию / пакетную запись между несколькими экземплярами Firestore? - PullRequest
0 голосов
/ 11 октября 2018

Firebase позволяет иметь несколько проектов в одном приложении .

// Initialize another app with a different config
var secondary = firebase.initializeApp(secondaryAppConfig, "secondary");

// Retrieve the database.
var secondaryDatabase = secondary.database();

Пример : Project 1 содержит мою коллекцию пользователей;У Project 2 есть коллекция моих друзей (предположим, есть причина для этого).Когда я добавляю нового друга в базу данных Project 2, я хочу увеличивать friendsCount в пользовательском документе в Project 1. По этой причине я хочу создать транзакцию / пакетную запись для обеспечения согласованности данных.

Как мне этого добиться?Могу ли я создать транзакцию или пакетную запись между различными экземплярами Firestore?

1 Ответ

0 голосов
/ 11 октября 2018

Нет, вы не можете использовать функцию транзакции базы данных в нескольких базах данных.

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

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

В теории управления базами данных блокировка используется для реализации изоляции между несколькими пользователями базы данных.Это «я» в сокращении ACID.

Источник: https://en.wikipedia.org/wiki/Record_locking

...