2014-01-29 8 views
50

Ich möchte die SQL-Befehle sehen, die an den PostgreSQL-Server gesendet werden, weil ich überprüfen muss, ob sie korrekt sind. Insbesondere interessieren mich die Befehle zur Tabellenerstellung.Wie kann ich das von Sequelize.js generierte SQL sehen?

Zum Beispiel, ActiveRecord (Ruby) druckt seine SQL-Anweisungen auf Standardausgabe. Ist das auch mit Node.js/ActionHero.js und Sequelize.js möglich?

Antwort

92

Sie können eine Logging-Option übergeben, wenn sequelize Initialisierung, die entweder eine Funktion sein kann oder console.log

var sequelize = new Sequelize('database', 'username', 'password', { 
    logging: console.log 
    logging: function (str) { 
     // do your own logging 
    } 
}); 

Sie können auch eine Logging-Option übergeben .Sync wenn Sie nur die Tabellenerstellung anzeigen möchten Abfragen

+0

Danke, das ist genau das, was ich will. 'DEPRECATION WARNING: Die Logging-Option sollte entweder eine Funktion oder falsch sein. Standard: console.log' - was bedeutet das? – ideaboxer

+0

Bedeutet, dass Sie eine Funktion anstelle von true übergeben sollten. –

+5

Ich habe nie "wahr" passiert. – ideaboxer

23

Wenn Sie die Sequelize für einen Befehl betrachten möchten, können Sie es hören und eine Funktion an den Druck der SQL.

Schauen Sie sich dieses Beispiel:

User.find(1).on('sql', console.log).then(function(user) { 
    // do whatever you want with the user here 
+20

Sie übergeben nun einen Logger als Option, um eine einzelne Anweisung zu protokollieren: 'User.find (1, {logging: console.log})' –

+0

Meine sagt nur ' .findOne (...). On is kein function' mit sequelize 3.30.4 – ginna

3

Wie im Protokoll Error: Please note that find* was refactored and uses only one options object from now on. angegeben. Für die neueste Version sequelize wenn Sie wollen nur für einen Befehl, um das Ergebnis haben:

User.findAll({where: {...}, logging: console.log})

+1

dies auch mit nativen Abfragen funktioniert: 'Abfrage (Anweisung, { Ersatz: { userId: userId, superiorPositions: [4, 5, 7], Abteilungen: [DepartmentID ] }, Protokollierung: console.log }); ' –

Verwandte Themen