Dieser Code hat zwei Probleme gleichzeitig:
- ungültig Versprechen Gebrauch, wenn innerhalb
.catch
Sie return result
tun, das ist nicht, wie Versprechen Spuck gehandhabt werden, müssen Sie entweder die Fehlerbehandlung zur Verfügung stellen, oder den Fehler erneut werfen/zurückweisen.
- ungültige Verwendung von pg-promise Bibliothek. Sie verwenden Methode one, die ablehnen soll, wenn etwas anderes als 1 Datensatz zurückgegeben wird, as per the method's documentation, und gleichzeitig sagen Sie
I need to catch if it returns more than one row...
, was ein logischer Widerspruch ist.
Das Ergebnis ist wie folgt: Ihre Abfrage erfolgreich ausgeführt wird, und mehr als einen Datensatz zurückgibt, was wiederum Methode macht one ablehnen, und dann nehmen Sie die Ablehnungsgrund und machen es zu einem aufgelöst ein, indem Sie return result
. Alles in allem ist Ihr Code überall kaputt.
Zuerst, mit pg-promise sollen Sie die richtige Methode verwenden, entsprechend der Anzahl der Datensätze, die Sie zurück erwarten, siehe The Basics.
Und dann handle .then/.catch
nach Ihrer Geschäftslogik. Ich kann hier nicht genauer sein, weil Sie dazu keine näheren Angaben gemacht haben.
Sie definieren eine Funktion ohne Rückgabewert, also was erwarten Sie? Fügen Sie vor 'db.one()' eine 'return' hinzu und Sie sollten das Versprechen erhalten. – Sirko
Das Hinzufügen von 'return' vor' db.one() 'und das Entfernen der beiden anderen 'returns' gibt ein leeres Objekt zurück. – ocram
Dein 'then()' und 'catch()' sind sowieso ziemlich nutzlos, also werde sie alle zusammen los. – Sirko