Ziel meiner App ist es, dass Benutzer eine Liste von Formularen speichern und abrufen können, die ausgefüllt und bearbeitet werden sollen. Ein Benutzer wird viele Formen haben, und ein einzelnes Formular wird aus mehreren eigenen Feldern bestehen.Übergeben einer Liste benutzerdefinierter Typen an eine GraphQL-Mutation
Wenn mein haben meine Typen wie diese aufgebaut, zum Beispiel:
const FormType = new GraphQLObjectType({
name: 'FormType',
fields: {
id: { type: GraphQLID },
name: { type: GraphQLString },
email: { type: GraphQLString }
}
});
const UserType = new GraphQLObjectType({
name: 'UserType',
fields: {
id: { type: GraphQLID },
email: { type: GraphQLString },
firstName: { type: GraphQLString, default: '' },
lastName: { type: GraphQLString, default: '' },
phone: { type: GraphQLString, default: '' },
forms: { type: new GraphQLList(FormType) }
}
});
Und meine Mutation wie folgt aus:
const mutation = new GraphQLObjectType({
name: 'Mutation',
fields: {
saveForm: {
type: UserType,
args: {
userID: { type: GraphQLID },
form: { type: FormType } // ???
},
resolve(parentValue, { userID, form }) {
// I'll figure out what to do here when the time comes
}
}
}
});
Ich kann nicht eine Mutation zu schaffen scheinen, die mit GraphQLList
funktioniert . Ich erhalte diese Fehlermeldung:
Error: Mutation.saveForm(form:) argument type must be Input Type but got: FormType.
..., die meine Forschung sagt mir bedeutet, dass FormType
ein GraphQLInputObjectType
sein muss. Wenn ich es entsprechend ändere, bekomme ich nur den Fehler:
Error: Mutation.saveForm(form:) argument type must be Output Type but got: FormType.
So nichts ändert sich wirklich. Kennt jemand ein funktionierendes Beispiel für dieses Problem?
Also anstatt zu versuchen, eine Liste von FormTypes-Objekten zu übergeben, sollte ich nur eine Liste ihrer IDs übergeben? Das macht sehr viel Sinn, das würde die GraphQList nicht stören, nehme ich an. Das ursprüngliche Denken über den Eingabetyp für ein Formular ist, weil das Formular selbst sehr komplex ist, und ich möchte es aus mehreren kleineren Typen erstellen, ähnlich wie meine React-Komponenten strukturiert sind. Ich dachte mir, sobald ich weiß, wie man den Formulartyp an den Benutzer weitergibt, könnte ich die gleiche Logik auf die Formulartypen anwenden. – JayBauer
Ich denke, ich vermisse etwas hier. Benötige ich keine separate Mutation, um das Formular zu speichern (wodurch die ID generiert wird), bevor ich es an den Benutzer übergeben kann? Ich weiß, dass ich wahrscheinlich etwas vermisse, aber ich mache seit ein paar Tagen keinen Fortschritt mehr und es fängt an, mich an die Wand zu fahren. Ich entschuldige mich, wenn irgendetwas, was ich an dieser Stelle sage, offensichtlich erscheint. Alles, was ich weiter klären kann, um dies leichter verständlich zu machen, werde ich zur Verfügung stellen. – JayBauer
Kein Grund sich zu entschuldigen! Das ist immer noch ziemlich modern. Habe ich Recht, dass der ursprüngliche Titel "Eine Liste von benutzerdefinierten Typen übergeben" nicht ganz richtig ist? Und das müssen Sie tatsächlich in einem Satz (oder in GraphQL-Begriffen, Objekt) von Formulardaten übergeben? Es scheint mir, dass "Form" hier nicht wirklich das Wesentliche ist, aber vielleicht eine Liste von Fragen? –