Holen Sie Verwandte Elemente in keystone
Arbeiten an einem Projekt, in KeystoneJS und ich habe Schwierigkeiten, herauszufinden, die Mungo-Beziehung bit.
Entsprechend dem keystone-docs, sagen wir, wir haben die folgende Modelle: User
und Post
. Jetzt eine Stelle hat, eine Beziehung zu einem Nutzer, so werde ich schreiben:
Post.add({
author: { type: Types.Relationship, ref: 'User' }
});
dann:
User.relationship({ path: 'posts', ref: 'Post', refPath: 'author' });
Nun, ich möchte in der Lage, um zu sehen, alle Beiträge im Zusammenhang mit diesem Benutzer ohne eine Abfrage für beide ein Benutzer und Beiträge. Wenn ich zum Beispiel abgefragt, die für einen Benutzer-Objekt möchte ich in der Lage sein zu tun user.posts
und haben Zugang zu den related posts. Kann man dies mit Mungo/keystone?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich das verstanden habe, keystone Liste Beziehung hat nichts zu tun mit Mungo und Abfragen. Stattdessen, es wird von keystone in der admin-Benutzeroberfläche bauen, aus der Beziehung Abfragen, bevor Sie Rendern in den Blick. Dieser sagte, ich würde vergessen
User.relationship(...);
um Ihr problem zu lösen, obwohl Sie es wollen, für das, was ich eben schon erwähnt.Folgende sollte gut funktionieren, basierend auf schema, sondern füllt nur die Beziehung auf die
one
Seite:Könnten Sie auch versuchen, diese den anderen Weg, aber...
...Mungo erwartet, dass diese definition wird Hinzugefügt, um die Schema. Diese Beziehung wird Hinzugefügt, darunter diese Zeile in der User-Liste-Datei:
Nach dem Lesen der keystone-docs, scheint dies logisch äquivalent der Mungo Reine Weise
User.schema.add({ posts: [{ type: Schema.Types.ObjectId, ref: 'Post' }] });
. Und jetzt sind Sie nun Pflege der Beziehung auf beide Listen. Stattdessen können Sie eine Methode auf Ihre keystone-Liste.Durch hinzufügen einer Methode, um Ihre Benutzer-Liste, es erspart Ihnen das speichern des array von
ObjectId
s über die MongoDB-Dokument zurück an den Post-Dokumente. Ich weiß, dies erfordert eine zweite Abfrage, aber eine dieser beiden Optionen suchen, um Ihre beste Wette.Ich fand diese auf Ihre github https://github.com/Automattic/mongoose/issues/1888, überprüfen Sie es aus dem Kontext, aber im Grunde sagt verwenden Sie die keystone-populateRelated () - Methode. Habe es getestet und funktioniert
Ich bin mir bewusst, die Frage ist alt, aber das hat für weitere Referenz