2017-03-22 6 views
0

Ich habe ein Objekt in meiner Firebase 2.x DB, die in etwa so aussieht:-Update für mehrere Benutzer zur gleichen Zeit in Feuerbasis

{ 
    "users": { 
    "$id": { 
     "date_of_birth": "June 23, 1912", 
     "full_name": "Alan Turing", 
     "group": "users", 
     "nickname": "Alan The Machine" 
    } 
    } 
} 

und nach dem besten Weg suchen, mehrere Benutzer gleichzeitig zu aktualisieren . Zum Beispiel möchte ich alle Benutzer mit der Gruppe 'Benutzer' in die Gruppe 'Moderadors' oder ähnlich ändern.

Wie kann ich das tun?

+0

Natürlich kann ich nur alle Benutzer mit der Gruppe X Schleife durch das Objekt und ändern Sie alle Gruppe X in Gruppe Y und danach schreiben Sie die gesamte Daten über Update zurück, aber ich bezweifle, dass dies der beste Ansatz für eine DB mit ist Tausende von Benutzern. Was ich suche ist im Grunde, was ich in MySQL tun würde (update WHERE group = x) – Oliver

Antwort

1

Es gibt ein paar Möglichkeiten, dies zu erreichen, und Sie erwähnen eines in Ihrem Kommentar.

1) Abfrage für alle Benutzer wo Gruppe = Benutzer. Iterieren jede und die Gruppe aktualisieren in jeder der Gruppe = Moderatoren

2) Fügen Sie etwas Struktur

users 
    uid_0 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "group": "-UY89j99j9jasd", 
    "nickname": "Alan The Machine" 
    uid_1 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "group": "-Y888jasjdjaos", 
    "nickname": "Alan The Machine" 
    uid_2 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "group": "-UY89j99j9jasd", 
    "nickname": "Alan The Machine" 

und die Gruppen

-UY89j99j9jasd 
    group_name: "users" 
-Y888jasjdjaos 
    group_name: "dudes" 

dann alle aktuellen Benutzer zu drehen, die der Nutzer sind In Moderatoren ändern Sie den Gruppennamen in "Moderatoren". Das ist auch schön, denn wenn Sie sich entscheiden, dass Sie das Wort "Moderatoren" nicht mögen, sondern stattdessen "Leute, die pfeifen" nennen, können Sie das mit einer Änderung tun.

-UY89j99j9jasd 
    group_name: "moderators" //or 'people who pwn' 
-Y888jasjdjaos 
    group_name: "dudes" 

3) kippen Sie Ihre Logik und speichern Sie die Benutzer in einem Moderator oder Benutzerknoten.

users 
    uid_0 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "nickname": "Alan The Machine" 
    uid_1 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "nickname": "Alan The Machine" 
    uid_2 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "nickname": "Alan The Machine" 

und die Gruppen

-U8asdjoasjds 
    group_name: "moderators" 
    members: 
    uid_0: true 
    uid_2: true 
-Yuiis9isisis 
    group_name: "users" 
    members 
    uid_1: true 

Jetzt können Sie leicht alle Kinder in der Benutzer/Mitglieder-Gruppe erhalten und fügen Sie sie in die Gruppenmoderatoren, und Sie können auch die Namen der Gruppen ändern Gut.

4) nicht empfohlen,

administrators 
    uid_0: true 
    uid_2: true 
users 
    uid_1: true 

dies ist ähnlich wie # 3, aber der Schlüssel ist den Gruppentyp zu identifizieren. Gleicher Deal wie 3, erhalten die Kinder der Benutzer und schreiben sie an die Administratoren. In der Regel empfiehlt es sich, die Schlüsselnamen von den Daten zu trennen, die in den Daten enthalten sind, aber in diesem Fall ist es möglicherweise in Ordnung.

+0

Danke Jay, du hast ein paar tolle Punkte hier und du hast alles wundervoll erklärt. Ich habe im Grunde die Situation 2 bereits, aber in diesem Fall kann ich nicht einfach die Gruppe umbenennen haben mehrere Gruppen mit unterschiedlichen Berechtigungen und wenn ich eine Gruppe lösche muss ich alle Benutzer aus dieser Gruppe in eine andere verschieben, aber kann nur die alte Gruppe umbenennen Ich hätte vielleicht Doppelgruppen. Also werde ich mich am Ende für einen Mix aus 1 und 2 entscheiden. Du hast meine Gedanken bestätigt. Ich hoffte, dass es einen einfachen einfachen MySQL-Typ oder -Ansatz gab :) aber ich bin auf jeden Fall glücklich. – Oliver

Verwandte Themen