Ich versuche Fehler für POST
mit dem gleichen Benutzer E-Mail mit dem folgenden (mit superagent
) Handhabung zu tun:schlecht Anfrage statt voller Fehler bekommen Nachricht
export function signUpUser(userData) {
return async dispatch => {
try {
const currentUser = await request.post(`${url}/signup`).send(userData);
set(window.localStorage, 'x-auth', currentUser);
dispatch(signUpSuccessObject(userData));
} catch (error) {
dispatch(signUpFailObject(error));
}
};
}
Ich möchte erhalten die folgenden, die ich sehen kann in meinem Netzwerk tab:
{ "name": "SequelizeUniqueConstraintError", "Fehler": [{ "message": "E-Mail muss eindeutig sein", "type": "unique Verletzung", "Weg ":" email "," value ":" [email protected] "," Herkunft ":" DB "," Instanz ":
Aber anstatt alles, was ich bekommen ist:
Bad Request
Mein Controller für API:
User.create(
Object.assign(req.body, {
password: bcrypt.hashSync(req.body.password, 10),
})
)
.then(() => {
const myToken = jwt.sign({email: req.body.email}, 'leogoesger');
res.status(200).send(myToken);
})
.catch(err => res.status(400).send(err));
},
Der Status 400 (auch bekannt als "Bad Request") zeigt einen Client-Fehler (wie zum Beispiel fehlerhafte Syntax, zu groß, etc.). Dies ist nicht wirklich die Quelle Ihres Fehlers, insbesondere im Falle eines DB-Feldes, das die Validierung nicht besteht. Haben Sie versucht, einen anderen Statuscode zurückzusenden, um festzustellen, ob Sie dadurch den Fehler clientseitig nicht sehen können? Meine Vermutung ist, dass das Standardverhalten des Browsers bestimmte Statuscodes übernehmen könnte, und 400 könnte einer davon sein? – Jaxx
Anscheinend ist die Wahl, welchen Statuscode für eine Situation wie Ihre zu verwenden, zur Debatte. Siehe https://stackoverflow.com/questions/19671317/400-bad-request-http-error-code-bedeutet - einige sehr interessante Antworten und Kommentare dort. – Jaxx
Das Problem ist "Fehler" beim Versand. Was ich hätte verwenden sollen, ist "error.response". Es ist merkwürdig, wie es anders als "onSuccess" funktioniert. – Leogoesger