Bookshelfjs ORM 如何获取或查看其构建的 SQL 语句

Posted

技术标签:

【中文标题】Bookshelfjs ORM 如何获取或查看其构建的 SQL 语句【英文标题】:Bookshelfjs ORM How to get or see SQL statement its building 【发布时间】:2016-07-11 07:55:31 【问题描述】:

在构建 ORM 查询时,我想看看实际执行的(原始)查询是什么。

例如在 Rails 中我们可以这样做:

User.where(name: 'Oscar').to_sql
# => SELECT "users".* FROM "users"  WHERE "users"."name" = 'Oscar'

Bookshelfjs 中有这个功能吗?或任何其他方式来获得这个?

提前致谢

【问题讨论】:

【参考方案1】:

看起来没有像 Rails 那样直接获取 SQL 语句的方法。

您可以使用 .query() .toSQL() 或 .query() .toString()。但是在 Rails 中获得准确的结果有点复杂,因为查询可能不完整。原因是在 Bookshelf 中执行查询之前应用了许多语句。例如书架关系就是这样。许多插件也使用事件来应用查询语句。如果您想调试查询,那么我建议您改用Knex#debug。例如

model.query(function(qb) 
  qb.debug(true);
).fetch()

它在控制台中打印调试信息。

来源:来自官方bookshelfjs github

【讨论】:

这个选项是救命稻草。谢谢。

以上是关于Bookshelfjs ORM 如何获取或查看其构建的 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章

使用 Bookshelfjs 的 M-N 关系

调试 Dapper Contrib(或任何 ORM) - 如何在 Visual Studio 中查看生成的 SQL - 例如更新?

Kohana 3 - 获取 orm 验证错误

如何查看Django ORM执行的SQL语句

如何查看 Django ORM 运行的查询?

如何使用 Django ORM 排除列的多个值?