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 语句的主要内容,如果未能解决你的问题,请参考以下文章
调试 Dapper Contrib(或任何 ORM) - 如何在 Visual Studio 中查看生成的 SQL - 例如更新?