【问题标题】:knex query with quotes around table nameknex 查询与表名周围的引号
【发布时间】:2018-07-13 10:40:01
【问题描述】:

我有一个查询如下,它返回代码不为空的用户信息

从代码不为空的“dev.user”中选择名称、年龄

返回预期输出

我正在做的事情

knex("user").select('name','age').whereNotNull('code')

它返回空!

调试查询返回如下

从“用户”中选择“姓名”、“年龄”,其中“代码”不为空 knex("dev.user").select('name','age').whereNotNull('code')

调试查询返回如下

从“dev”中选择“name”、“age”、“user”,其中“code”不为空

首先,当我初始化 knex 时,我设置了第二个不起作用的模式,即使我提供模式它正在生成查询为“dev”。“user”而不是“dev.user”

任何建议都会有所帮助

【问题讨论】:

  • 您找到解决方案了吗?我有名为“a.b”的视图,knex 将生成 'a'.'b' 而不是 'a.b'。
  • @EricRicher 我记得使用 known.raw 函数和表名是根据运行的环境生成的。我相信这个 sud 现在有一些优雅的解决方案......
  • 在当前版本中找不到优雅的解决方案。最终将视图重命名为“a_b”。感谢您的回复。

标签: node.js postgresql knex.js


【解决方案1】:

从文档看来,您应该使用.withSchema()。 (see link)

注意:标识符语法没有选择架构的地方,所以如果你 正在执行 schemaName.tableName,查询可能会呈现错误。采用 .withSchema('schemaName') 代替。

应该是:

knex("user")
   .withSchema("dev")
   .select('name','age').whereNotNull('code')

我自己不必包含架构,所以祝你好运。

加里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多