2014-01-29 146 views
50

我想查看發送到PostgreSQL服務器的SQL命令,因爲我需要檢查它們是否正確。特別是,我對錶創建命令感興趣。例如,ActiveRecord(Ruby)將其SQL語句輸出到標準輸出。這是可能的與Node.js/ActionHero.js和Sequelize.js以及?如何查看由Sequelize.js生成的SQL?

回答

92

初始化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 }) 
+0

謝謝,這正是我想要的。 '拒絕警告:日誌記錄選項應該是一個函數,或者是一個假的。默認:console.log' - 這是什麼意思? – ideaboxer

+0

意思是你應該傳遞一個函數而不是true。 –

+5

我從來沒有通過'true'。 – ideaboxer

23

如果你想看看一個命令,你可以聽它和附加功能,打印的sql的sequelize。

看看這個例子:

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

你現在傳入一個記錄器作爲一個選項來記錄一條語句:'User.find(1,{logging:console.log})' –

+0

我只是說' .findOne(...)。on不是function' 使用sequelize 3.30.4 – ginna

3

爲日誌Error: Please note that find* was refactored and uses only one options object from now on.中所述。有關最新版本sequelize如果你想有結果只有一個命令:

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

+1

這也適用於本機查詢:查詢'(聲明,{ 置換:{ 用戶名:用戶id, superiorPositions:4,5,7, 部門:DepartmentID的] }, logging:console.log });'' –

相關問題