2017-08-15 1 views
0

J'ai une structure Firebase qui contient des utilisateurs et des groupes dans Android. C'est une relation de plusieurs à plusieurs.Transactions Firebase d'ajouter, supprimer sur plusieurs nœuds

Firebase Structure

Lorsque j'ajoute un utilisateur dans le nœud de groupe, j'ajoute également le groupe dans le nœud utilisateur, mais sans utiliser tout type de mécanisme de transaction.

Maintenant, j'ai besoin de faire le cas du groupe de suppression où il enlèvera le noeud de groupe aussi bien que la propriété de groupe dans le noeud d'utilisateur où chaque utilisateur a joint. Il doit y avoir une transaction dans ce scénario. Jusqu'à présent, j'ai traité avec le code de transaction qui repose sur le même nœud mais pas sur un nœud différent.

J'ai besoin de savoir comment implémenter une transaction en cas d'ajout et de suppression sur plusieurs nœuds ou s'il existe une meilleure façon de l'implémenter.

Répondre

1

Les bases de données Firebase fonctionnent sur un seul noeud. Donc, si vous voulez utiliser une transaction, vous devrez le faire fonctionner sur toute la base de données. Cela va certainement tuer toute évolutivité de votre application, ce n'est donc pas une bonne idée.

utiliser à la place un multi-location update pour enlever le nœud affecté avec un appel à la base de données:

Map updates = new HashMap(); 
updates.put("https://stackoverflow.com/users/-Kr....", null); 
updates.put("/groups/-Kr.../users/-Kr...", null); 
ref.updateChildren(updates); 

Maintenant, toute cette opération va réussir ou d'échouer, sans exiger une transaction.

+0

Vous êtes le champion. Je ne savais pas qu'il y a quelque chose comme updateChildern malgré que j'ai cherché si longtemps sur cette question. – topgun263