2014-01-29 104 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 });'' –

相关问题