2017-06-23 2 views
0

Ich erstelle ein Nachrichten-Thread-Schema, wo Benutzer den Nachrichten-Thread beitreten, und holen Sie die Nachrichten für diesen bestimmten Thread.Graphql Nachricht Threadentwurf

Frontend: sollte jede Meldung einen wenig Avatar & Namen Das bedeutet, dass ich den Benutzer zu holen, den die Nachricht für jede einzelne Nachricht gesendet (dies ist die aktuelle Implementierung - eine DB-Abfrage läuft um den Benutzer zu erhalten für jede einzelne Nachricht)

Eine Lösung dafür war, die Benutzer auf der Thread-Ebene zu greifen. Dies würde bedeuten, dass ich die message.user_id mit der übereinstimmen müsste. Wäre es komisch, wenn ich das im Frontend machen würde? Ich habe das Gefühl, ich sollte den Benutzer für diese bestimmte Nachricht an das Backend anhängen?

Gibt es eine Möglichkeit, meine thread.thread_users Array in meine messages Verbindung zu übergeben?

Hier wird die aktuelle Abfrage ich habe:

thread(input...) { 
    id 
    // THIS HOLDS THE USERS WHO ARE IN THIS THREAD 
    threadUsers { 
    name 
    firstName 
    avatar { 
     original 
     thumbnail 
     medium 
    } 
    } 
    lastReadMessageId 
    messages { 
    edges { 
      cursor 
      node { 
      from { 
       firstName 
       lastName 
      } 
      messageContent 
      } 
    } 
    } 
} 

Ich denke, die Frage ist:

Ist es möglich, die thread_users Array aus dem Innern des Nachrichtentypen zu greifen? So kann ich dann passen die thread_user zum message.user_id

oder ob ich sollte die thread_users zum message.from_id auf dem Front-End werden passend?

Die Datenbank sieht wie folgt aus:

thread:

  • id
  • created_at
  • OWNER_ID

Nachrichten:

  • from_id (der Benutzer, der die Nachricht gesendet)
  • messageContent (der Inhalt der Nachricht)

thread_users: (einfach dort aufzeichnen, was die Nutzer in den Threads)

  • thread_id
  • user_id

Antwort

0

Was ich getan habe, war, das Front-End damit umgehen zu lassen. Ich hätte möglicherweise Dataloader mit Graphql verwenden können, aber das war nicht nötig.