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

如何在Prisma的AND查询中嵌套OR(传递对象数组方式)

在Prisma的AND查询中嵌套OR逻辑的正确写法

你的代码存在两个关键问题,调整后就能实现「多组OR条件通过AND组合」的查询逻辑:

  1. 变量语法错误:字符串值必须加引号,否则会被识别为未定义变量,比如berlin要写成'berlin'。
  2. AND条件结构错误:Prisma的AND接收查询条件对象的数组,每组OR逻辑需要包装成独立对象,不能直接在数组里写OR:city这种键值对。

修正后的完整代码

// 修正变量的字符串引号问题
const city = [{ city: 'berlin' }, { city: 'newyork' }];
const brand = [{ brand: 'bmw' }, { brand: 'nissan' }];

const filter = async (_, { city, brand, model }) => {
  const ads = await Client.Ads.findMany({
    where: {
      AND: [
        // 每组OR条件作为AND数组的独立元素
        { OR: city },
        { OR: brand },
        // 如果model需要添加类似逻辑,可按需扩展
        ...(model ? [{ OR: model }] : [])
      ]
    }
  });
  return ads;
};

逻辑说明

  • AND数组中的每个对象代表一个必须满足的条件组
  • 每个条件组内的OR数组,只要其中一个对象的条件匹配,该组即满足
  • 最终实现:广告需同时满足「城市为柏林/纽约」且「品牌为宝马/日产」(若有model参数,可追加对应的OR条件组)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:01:11