Apollo-client mutation Fehlerbehandlung
Ich bin mit GraphQL und Mungo auf dem server.
Wenn ein überprüfungsfehler Auftritt der GraphQL mutation sendet eine Antwort mit status-code 200. Auf der client-Seite, die Antwort sieht wie folgt aus:
JS:
{
"data": null,
"errors": [{
"message": "error for id...",
"path": "_id"
}]
}
Ich würde gerne Zugriff auf die Validierung Fehler mit den catch
Funktionalität der apollo-client-mutation Versprechen. So etwas wie:
JS:
this.props.deleteProduct(this.state.selectedProductId).then(response => {
//handle successful mutation
}).catch(response => {
const errors = response.errors; //does not work
this.setState({ errorMessages: errors.map(error => error.message) });
});
Wie kann das getan werden?
- versuchen Sie es mit
throw
Anweisung durch die SchaffungError
Instanz
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: Diese Antwort (und wohl auch die ganze Frage) ist jetzt veraltet, da die mutation, die Fehler zeigen sich in
catch
in neueren Versionen von Apollo-Client.GraphQL Fehler aus der mutation, die derzeit in der
errors
Feld auf die Antwort inthen
. Ich denke, es ist auf jeden Fall eine Reklamation gemacht werden, Sie sollten zeigen, bis in dercatch
statt, aber hier ist ein Ausschnitt von einer mutation aus GitHunt:Die Vorherige Antwort von @stubailo nicht scheinen, um alle Anwendungsfälle. Wenn ich werfe einen Fehler auf meinem server-side-code der response-code wird anders sein als 200, und die Fehler behandelt werden, mit
.catch()
und nicht mit.then()
.Link , um das Problem auf GitHub.
Die besten ist wahrscheinlich, um den Fehler zu behandeln, die auf beiden
.then()
und.catch()
.Mit graphql-tag-notation, yo haben Zugriff zu den Fehlern:
https://www.apollographql.com/docs/react/essentials/mutations.html