在从Knex js SQL查询获得的值之前或追加

问题描述

我有一个简单的people表,其中有两列idname

我可以如下查询所有名称以及ID

const persons = await knex('people').select('id','name');

我想在所有名称添加Dr.

例如

{id:1,name: 'Tom'} 

应该返回

{id:1,name: 'Dr. Tom'}

我如何在knex js中做到这一点?

解决方法

我相信您可以使用JS map在内存中轻松地完成此操作,但是显然您希望在数据库级别执行此操作。

基本上,您需要以下查询:

select CONCAT('Dr. ',people.name) as 'name',people.id as 'id' from people;

(在w3schools在线提琴手中经过测试)

因此,我们可以有效地尝试以下操作(基于http://knexjs.org/标识符语法):

knex({ people: 'people' })
  .select({
    id: 'people.id',name: 'CONCAT("Dr. ",people.name)'
  })

但是我不确定knex是否可以替代它。

但是,问题是,就我而言,并非所有SQL方言都支持CONCAT