如何在Loopback中实现类似MySQL的value BETWEEN column1 AND column2查询?
在Loopback中实现
value BETWEEN column1 AND column2查询 好问题!Loopback官方文档里的between过滤器确实只支持列在两个固定值之间的场景(也就是column BETWEEN val1 AND val2),但要实现你需要的固定值在两个列之间的查询(即value BETWEEN column1 AND column2),其实可以通过组合逻辑条件来完成,本质上等价于SQL里的column1 <= value AND column2 >= value。
具体实现方法
不管你用的是Loopback 3还是Loopback 4,核心思路都是用and操作符组合两个比较条件:
Loopback 3 示例
假设你的模型是Product,要查询10这个值在minPrice和maxPrice之间的记录:
Product.find({ where: { and: [ { minPrice: { lte: 10 } }, // 对应 column1 <= value { maxPrice: { gte: 10 } } // 对应 column2 >= value ] } }, (err, results) => { // 处理查询结果 });
Loopback 4 示例
用WhereBuilder构建查询会更直观:
import { WhereBuilder } from '@loopback/repository'; // 假设你注入了ProductRepository const whereBuilder = new WhereBuilder(); const targetValue = 10; const where = whereBuilder .and({ minPrice: { lte: targetValue } }) .and({ maxPrice: { gte: targetValue } }) .build(); const results = await this.productRepository.find({ where });
原理说明
SQL中的value BETWEEN column1 AND column2本身就等价于column1 <= value AND value <= column2(注意BETWEEN是包含边界的),所以用Loopback的lte(小于等于)和gte(大于等于)组合,就能完美实现相同的效果。官方的between过滤器只是封装了列的范围查询,反向场景需要我们手动拆解成基础条件组合。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

