如何使用 knex.select() select 类型数组列的列的第一个元素?

How to select the first element of a column of type array column using knex.select()?

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

我已经试过了。

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

期待项目 table 的图像列的第一个元素。

尝试使用 first() 函数。它 returns 您的 table 中的第一行(无论 table 的排序顺序如何)。 .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]);
})

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

这似乎在 knex 中为它构建了正确类型的查询(注意在 postgresql 中数组从索引 1 开始):

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

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