Ankündigung

Einklappen
Keine Ankündigung bisher.

Firebase / NoSQL - konzeptionelle Frage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Firebase / NoSQL - konzeptionelle Frage

    Moin,
    als Frontend-Entwickler greife ich normaler Weise auf bereits existierende APIs, bzw. REST-Endpoints zu, um dort Daten abzuholen. Nun will ich zu Übungszwecken mal eine FullStack-App mit Firebase als Backend erstellen und habe dazu eine konzeptionelle Frage hinsichtlich Relations in dokumentenorientierten NoSQL Datenbanken. Da fehlt mir die Erfahrung.

    Technology-Stack:
    Angular, AngularFire, Firebase (Cloud Firestore).

    Aufgabe:
    Eine einfache CRUD Application, bei der sich Leute registrieren, einloggen, Beiträge erstellen und die eigenen updaten, bzw. löschen können. Also zwei Module: User und Beiträge.

    Problem:
    Die Beziehung zwischen Usern und Beiträgen.

    Das User-Modul ist fertig. Wenn ein eingelogter Benutzer Beträge schreibt, werden diese als nested Subcollection im entsprechenden Document der Users Collection eingebettet. Ich kann damit Queries wie getAllUsers() und getUserById(id) durchführen, um an deren Beiträge zu gelangen.

    Frage ist nun, wie ich Beiträge unabhängig vom User fetche, also getAllPostings(), bzw. getPostingById(id). Dazu müsste ich nach meinem Verständnis eine zweite Collection namens Beiträge erstellen und anstelle des Beitrags nur dessen uid beim entsprechenden User speichern. Ist das so richtig, oder gibt es einen besseren Ansatz? Auch im Hinblick auf Cloud FireStore. Vielleicht hat ja jemand Erfahrung damit.


  • #2
    Eine eigene Collection macht durchaus sinn. Wenn möglich sollten Nested Collection vermieden werden. In der Dokumentation wird dies auch noch mal explizit erklärt:
    https://firebase.google.com/docs/dat...structure-data

    Because the Firebase Realtime Database allows nesting data up to 32 levels deep, you might be tempted to think that this should be the default structure. However, when you fetch data at a location in your database, you also retrieve all of its child nodes. In addition, when you grant someone read or write access at a node in your database, you also grant them access to all data under that node. Therefore, in practice, it's best to keep your data structure as flat as possible.

    Kommentar


    • #3
      Ich habe nun zwei Collections (Users, Articles) angelegt und in jedem Article-Document name und uid des Autors gespeichert.

      Kommentar

      Lädt...
      X