如何使用knex.select()选择类型为array column的列的第一个元素?

时间:2019-05-26 08:40:18

标签: javascript arrays knex.js

我们能够在Postgres SQL数据库中选择类型为array的列的第一个元素。但是我无法使用knex进行查询。

我已经尝试过了。

database('items')
    .select({icon: 'images[0]})
    .then(data => {
    res.send(data) 
}

期望item表的images列的第一个元素。

2 个答案:

答案 0 :(得分:1)

尝试使用first()函数。它返回表中的第一行(以表排序的任何顺序)。 .select('images')会将返回的列限制为images

knex
  .select('images')
  .table('items')
  .first()
  .then((data) => {
    // first row of 'images' is an array.
    // return only the first item in array.
    res.send(data[0]);
})

答案 1 :(得分:0)

https://www.postgresql.org/docs/current/arrays.html#ARRAYS-ACCESSING

这似乎在knex中为其建立了正确的查询类型(请注意,PostgreSQL数组中的索引从索引1开始)

knex('items').select({icon: knex.raw('??[1]', ['images'])})

这是生成的查询https://runkit.com/embed/1apx76bh4u40的runkit示例