Ich habe eine Methode findByIdAndRemove
auf einem MongoDB aufrufen. Falls ich die ID nicht finden kann und sie deshalb nicht aus der Datenbank löschen kann, möchte ich einen Fehler ausgeben.Knoten Promise Ablehnung nicht fangen
löschen Armaturenbrett Funktion:
deleteDashboard = (id) => {
return Dashboard.findByIdAndRemove(id).exec((err, dashboard) => {
if (err) return errorHandler.handle('dashboardService', err);
if (dashboard === null) return Promise.reject({ status: 404, message: 'not found' });
return Promise.resolve(dashboard);
});
};
Funktionsaufruf:
return dashboardService.deleteDashboard(id)
.then(dashboard => res.status(200).json(dashboard))
.catch(error => res.status(error.status).json(error));
Ich verstehe nicht, warum dashboardService.deleteDashboard
mit einem id-Aufruf, die nicht in der Datenbank enthalten ist, nicht in den Fang . Beim Debugging habe ich überprüft, dass der if(dashboard === null)
Zustand eintritt und somit Promise.reject()
aufruft, aber dann tritt der then
statt der catch
ein.
Verwenden Sie 'throw' anstelle von' reject', funktioniert in den meisten Fällen – wrangler