You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:22:26