我正在尝试使用Postgres在Knex中实现以下查询,以便返回静态的“$ type”列(用于向GraphQL服务器提供类型提示):
select *, 'Patrol' as "$type" from patrol;
当我使用Knex查询生成器时,它会处理引号:

knex('patrol')
  .select(['*', `'Patrol' as "$type"`])
  .where('id', 12345)
  .first()

退货
ERROR:  column "'Patrol'" does not exist at character 11
STATEMENT:  select *, "'Patrol'" as """$type""" from "patrol" where "id" = $1 limit $2

我可以使用knex.raw()构造查询,但是我真的不想这样做:
knex.raw(
  `SELECT *, 'Patrol' as "$type" FROM patrol WHERE id = '${value}' LIMIT 1;`
)

我应该如何构造select()语句,以便查询生成器正确解释它?

最佳答案

我能够通过在knex.raw()中使用select使其工作:

knex('patrol')
  .select(knex.raw(`*, 'Patrol' as "$type"`)
  .where('id', 12345)
  .first()

关于javascript - Knex选择静态 "column"作为别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48872592/

10-12 13:31