【发布时间】:2014-02-21 01:04:23
【问题描述】:
我想查看发送到 PostgreSQL 服务器的 SQL 命令,因为我需要检查它们是否正确。特别是,我对表创建命令感兴趣。
例如,ActiveRecord (Ruby) 将其 SQL 语句打印到标准输出。 Node.js/ActionHero.js 和 Sequelize.js 是否也能做到这一点?
【问题讨论】:
标签: node.js sequelize.js
我想查看发送到 PostgreSQL 服务器的 SQL 命令,因为我需要检查它们是否正确。特别是,我对表创建命令感兴趣。
例如,ActiveRecord (Ruby) 将其 SQL 语句打印到标准输出。 Node.js/ActionHero.js 和 Sequelize.js 是否也能做到这一点?
【问题讨论】:
标签: node.js sequelize.js
初始化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 })
【讨论】:
DEPRECATION WARNING: The logging-option should be either a function or false. Default: console.log -- 这是什么意思?
true。
console.log 以神秘的方式工作。您应该能够使用{ logging: (msg) => console.log(msg) } 或{ logging: function(msg) { console.log(msg) } } 避免日志消息。 (未经测试,所以我可能完全错了)
如日志Error: Please note that find* was refactored and uses only one options object from now on. 中所述。对于最新的 sequelize 版本(4),如果您只想获得一个命令的结果:
User.findAll({where: {...}, logging: console.log})
【讨论】:
query(statement, { replacements: { userId: userId, superiorPositions: [ 4, 5, 7 ], departments: [ departmentId ] }, logging: console.log });
如果您想查看一个命令的 sequelize,您可以收听它并将一个函数附加到打印 sql。
看看这个例子:
User.find(1).on('sql', console.log).then(function(user) {
// do whatever you want with the user here
【讨论】:
User.find(1, { logging: console.log })
<functionName>.findOne(...).on is not a function使用sequelize 3.30.4
get*。
您还可以通过设置环境来利用 Sequelize 对调试模块的使用,因此:
DEBUG=sequelize:sql*
在启动您的应用之前。
【讨论】: