我们能够在Postgres SQL数据库中选择类型为array的列的第一个元素。但是我无法使用knex进行查询。
我已经尝试过了。
database('items')
.select({icon: 'images[0]})
.then(data => {
res.send(data)
}
期望item表的images列的第一个元素。
答案 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示例