如何使用 max 从 Knex 查询中获取值?

AJ.*_*AJ. 6 mysql knex.js

我对 MySQL 表有一个非常简单的 Knex 查询来查找列的最大值id

const maxId = await knex('some_table').max('id').first()
Run Code Online (Sandbox Code Playgroud)

但这会返回一个TextRow具有单个、名称奇怪的属性的对象。来自console.log

TextRow { 'max(`id`)': 99 }
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以让我获取该值,或者我是否必须使用像这样的对象属性表示法:

const idValue = maxId['max(`id`)']
Run Code Online (Sandbox Code Playgroud)

AJ.*_*AJ. 9

看来最简单的答案是对结果进行别名,如下所示的第二个示例

const maxIdQuery = await knex('some_table').max('id as maxId').first()
console.log(maxIdQuery.maxId)        // shows the value
Run Code Online (Sandbox Code Playgroud)

替代语法:

const maxIdQuery = await knex('some_table').max('id', { as: 'max_id' })
console.log(maxIdQuery[0]['max_id'])
Run Code Online (Sandbox Code Playgroud)

希望这对将来的人有帮助。