【问题标题】:How can I see the SQL generated by Sequelize.js?如何查看 Sequelize.js 生成的 SQL?
【发布时间】:2014-02-21 01:04:23
【问题描述】:

我想查看发送到 PostgreSQL 服务器的 SQL 命令,因为我需要检查它们是否正确。特别是,我对表创建命令感兴趣。

例如,ActiveRecord (Ruby) 将其 SQL 语句打印到标准输出。 Node.js/ActionHero.js 和 Sequelize.js 是否也能做到这一点?

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    初始化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。
    • 我从来没有通过true
    • 我参加聚会有点晚了,但console.log 以神秘的方式工作。您应该能够使用{ logging: (msg) => console.log(msg) }{ logging: function(msg) { console.log(msg) } } 避免日志消息。 (未经测试,所以我可能完全错了)
    • 有什么办法可以看到生成的查询,但查询不应该执行?
    【解决方案2】:

    如日志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 });
    • 这是记录日志的正确答案:console.log 应该放置在续集 4 中。
    【解决方案3】:

    如果您想查看一个命令的 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
    • 似乎某些关联 mixin 不支持日志记录选项。具体来说,belongsTo 关系源上的get*
    【解决方案4】:

    您还可以通过设置环境来利用 Sequelize 对调试模块的使用,因此: DEBUG=sequelize:sql* 在启动您的应用之前。

    【讨论】:

    • 这应该是一个答案!感谢您的提示!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多