如何在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
相关产品推荐
相关产品推荐

