node.js - OffSet + Limit 查询返回错误的结果与adonis / node.js
问题描述
我需要使用 adonis 进行此查询:
SELECT * FROM book_unit where book_id = 1 ORDER BY unit desc LIMIT 1 OFFSET 2
所以,我做这个功能:
async procuraProximoSequence(bookId, offSet, maxRecords){
console.log(offSet)
console.log(maxRecords)
const historicoQuery = BookUnit.query()
.where('book_id', bookId)
.orderBy(['unit', 'sequence'], 'asc')
if(offSet !== null){
historicoQuery.offset(offSet)
}
if(maximoRegistros !== null){
historicoQuery.limit(maxRecords)
}
return await historicoQuery.paginate(1, 100)
}
这是 offSet、maxRecords 和 knex 执行的查询的 console.log() 值:
2 <br>
1 <br>
knex:query select count(*) as "total" from "book_unit" where "book_id" = ? limit ? offset ? undefined +8ms
knex:bindings [ 1, 1, 2 ] undefined +111ms
如果我打印查询结果,我不会收到任何行:
VanillaSerializer {
rows: [],
pages: { total: 0, perPage: 100, page: 1, lastPage: 0 },
isOne: false }
解决方案
看起来我不能.limit()
用.paginate()
就我而言,我做了这个更正:
async procuraProximoSequence(bookId, offSet, maximoRegistros){
console.log(bookId, offSet, maximoRegistros)
const historicoQuery = BookUnit.query()
.where('book_id', bookId)
.orderBy(['unit', 'sequence'], 'asc')
if(offSet !== null){
historicoQuery.offset(offSet)
}
if(maximoRegistros !== null){
return await historicoQuery.limit(maximoRegistros).fetch()
}
return await historicoQuery.paginate(1, 100)
}
现在一切正常
推荐阅读
- javascript - (Javscript/HTML) 如何在嵌套循环中通过跳列使 JavaScript 显示乘法表?
- php - 尝试在 Xampp 上安装 Invision 电源板时出现 PHP 错误
- typescript - NestJS-Mongoose:无法在 ChangeEvent 上访问 fullDocument
- python - 为什么将格式化信息添加到具有元组值的 f 字符串会引发 TypeError?
- bash - 在 dhcp conf 文件中提取包含范围的行
- flutter - 从顶部推送的页面更改后,不会产生 Flutter Bloc 状态
- c# - EventWaitHandle.Set,等待超时和释放线程数
- hlsl - 将像素着色器 asm 转换为 HLSL
- python - 从 TWS IB 提取基本数据的最后一段代码缺失
- javascript - 如何修复错误:null 不是对象(评估 'bleManager.start')?