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

如何在Node.js中使用Massive库实现PostgreSQL的ANY()运算符

使用Massive.js实现PostgreSQL数组ANY运算符查询

你原来的写法存在两个问题:一是JavaScript对象语法错误(&& ANY(group_number): '3467'不符合对象键值对规则),二是未使用Massive.js支持的操作符格式来实现PostgreSQL的ANY逻辑。下面提供两种可行的实现方式:

方式一:直接嵌入SQL条件(贴近原查询)

利用Massive.js的$where操作符,可直接写入原生SQL条件片段,完全匹配你想要的逻辑:

row = await this.table.findOne({
  name: 'john',
  $where: "'3467' = ANY(group_number)"
});

这种写法直接复用原生PostgreSQL条件,适合需要严格对齐原查询逻辑的场景。

方式二:使用Massive的数组包含操作符(ORM风格)

PostgreSQL中'3467' = ANY(group_number)和group_number @> ARRAY['3467']::varchar[]的查询效果完全等价(均用于检查数组字段是否包含指定元素)。Massive.js提供的$contains操作符对应该逻辑,写法更符合ORM风格:

row = await this.table.findOne({
  name: 'john',
  group_number: { $contains: ['3467'] }
});

注意$contains的参数必须是数组类型,Massive会自动处理类型转换以匹配character_varying[]字段。

两种方式均可实现需求,可根据代码风格偏好选择。

内容的提问来源于stack exchange,提问作者Geezus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:20:16