web-dev-qa-db-ja.com

Sequelize.jsによって生成されたSQLを表示するにはどうすればよいですか?

PostgreSQLサーバーに送信されるSQLコマンドを確認したいのは、それらが正しいかどうかを確認する必要があるためです。特に、テーブル作成コマンドに興味があります。

たとえば、ActiveRecord(Ruby)はそのSQLステートメントを標準出力に出力します。 Node.js/ActionHero.jsとSequelize.jsでもこれは可能ですか?

76
ideaboxer

Sequelizeの初期化時にロギングオプションを渡すことができます。これは関数またはconsole.logのいずれかです。

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

テーブル作成クエリのみを表示する場合は、ログオプションを.syncに渡すこともできます。

sequelize.sync({ logging: console.log })
121

1つのコマンドのsequelizeを確認したい場合は、それをリッスンし、SQLの出力に関数をアタッチできます。

この例を確認してください。

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

ログに記載されているとおりError: Please note that find* was refactored and uses only one options object from now on.。最新のsequelizeバージョン(4)で、1つのコマンドのみの結果を取得する場合:

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

21
Adlen Afane