2017-11-11 1 views
4

Wenn ich während einer Debugsitzung eine sequelize-Abfrage in der Konsole ausführe, ist die Rückgabe eine ungelöste Versprechung. Aber wie kann ich das Ergebnis dieser Anfrage/des Versprechens sofort erhalten?Wie führe ich eine Sequelize-Abfrage in der Konsole aus?

So wie ich es tun so weit:

Author.findOne({}) 
     .then(function(error, result){ 
       debugger; 
       //now I can work with the outcome in the console 
      }) 

Dieser Ansatz ist extrem zeitaufwendig, einfache Änderungen in der Abfrage würde eine Wiederholung der gesamten Debug-Sitzung erfordern das neue Ergebnis zu sehen.

+0

Ich denke, der Ansatz, den ich nehmen würde, ist, Tests dagegen zu schreiben. Auf diese Weise können Sie die Tests schnell nacheinander ausführen und es wäre nicht so zeitaufwendig, das zu tun, was Sie gerade tun. – Jonathan

Antwort

2

Obwohl Node nach Möglichkeit Operationen an das Betriebssystem auslagert und möglicherweise mehrere Threads unter der Haube laufen, gibt es nur einen Ausführungskontext für JavaScript/eine Ereignisschleife. Sobald Sie einen Haltepunkt erreicht haben, wird die Ereignisschleife erst bearbeitet, wenn Sie die Kontrolle übernommen haben. Daher wird keiner der asynchronen API-Vorgänge verarbeitet. Um das Ergebnis Ihrer Sequelize-Abfrage zu erhalten, müssen Sie die Ausführung fortsetzen.

Alternativ zur Verwendung eines Debuggers könnte ein REPL Ansatz in Betracht gezogen werden. Führen Sie node --inspect-brk aus und überprüfen Sie die Laufzeit des wartenden Knotens in den Chrome-Entwicklungstools (aufgeführt unter chrome://inspect). Nun sequelize initialisieren, an die DB verbinden, laden Sie das Author Modell (oder tun dies in einer Setup-Skript, das Sie mit --inspect laufen würde) und dann bewerten die folgenden:

await Author.findOne({}) 

Sie können das resultierende Objekt in der Konsole überprüfen , speichern Sie es in einer globalen Variable (Rechtsklick auf das ausgewertete Objekt ->Speichern als globale Variable), stringifizieren/kopieren Sie die global gespeicherte Variable in die Zwischenablage (copy(JSON.stringify(temp1))) usw. Sie können Ihre Abfrage einfach optimieren und erneut ausführen.

Verwandte Themen