Ich möchte, welcher Ansatz klären, die ich für meine Resolver-Funktionen in Apollo + GraphQLWelches ist die richtige Resolver-Funktion?
Nehmen wir an, das folgende Schema verwendet werden soll:
wie diesetype Post {
id: Int
text: String
upVotes: Int
}
type Author{
name: String
posts: [Post]
}
schema {
query: Author
}
Die ApoloGraphql tutorial schlägt eine Resolver-Karte:
{Query:{
author(_, args) {
return author.findAll()
}
}
},
Author {
posts: (author) => author.getPosts(),
}
Soweit ich weiß, jede Logik in Bezug auf Beiträge z get author with posts where the count of post upVotes > args.upVotes
, muss in der author
Methode behandelt werden. Das gibt uns die folgende Resolver Karte:
{Query:{
author(_, args) {
return author.findAll({
include:[model: Post]
where: {//post upVotes > args.upVotes}
})
}
},
Author {
posts: (author) => author.getPosts(),
}
Aufruf author
, wird zuerst der Autor mit den Beiträgen wählen in einer Abfrage verbunden, wo Beiträge größer als args.upVotes
. Dann wird er die Beiträge für diesen Autor wählen Sie erneut in einer weiteren Abfrage wegen Author ... getPosts()
Technisch ich das gleiche Ergebnis Author
durch Entfernen erreichen kann, da Beiträge bereits im kleinen author
Verfahren enthalten sind.
ich folgende Fragen:
Benötige ich diese Aussage? In welchen Fällen?
Author { posts: (author) => author.getPosts(), }
Wenn nein, wie kann ich dann herausfinden, ob die Beiträge Feld angefordert wurde, so dass ich die Pfosten sind bedingt machen kann, hängt nicht nur von den Argumenten, sondern auch auf den erforderlichen Feldern ?
Wenn ja, welche Beiträge enthalten das Endergebnis? Beiträge von der Include-Anweisung oder die getPosts()?
Vielen Dank, sehr gute Antwort. Der Typ "Autor" war in der Tat falsch. – henk