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

Prisma实现多条件地理权限筛选的问题及解决方案

在Prisma中实现基于地理位置权限的商品筛选

我需要实现基于地理位置的商品销售权限筛选,这个需求用SQL左连接能搞定,但一开始不知道怎么用Prisma实现。

表结构与权限规则

有一个和商品是1对多关联的restrictions表,结构如下:

Item | Geo | Allow

数据示例

  • 商品1允许在美国(US)和德国(DE)销售,数据如下:
    1   |  US  | 1
    1   |  DE  | 1 
    
  • 商品1仅允许在美国销售(其余地区禁止),数据则为:
    1   | GB  | 0
    1   | CA  | 0 
    

权限规则

  • Allow=1:明确指定该地理区域允许销售
  • Allow=0:仅列表里的地理区域禁止销售,其他未列出的区域默认允许

我的需求是根据客户所在地区(比如US),筛选出允许销售的商品。

初始尝试的问题

一开始写的Prisma代码只能筛选出geo=US且allow=1的商品,满足不了全部需求:

where: {
  type : 'active',
  restrictions: {
    some: {
      geo: "US",
      allow: 1,
    },
  },
},

实际需要的是同时满足两个OR条件:

  1. 该商品没有geo=US且allow=0的限制记录
  2. 该商品存在allow=1且geo≠US的允许记录

最终解决方案

后来搞清楚了Prisma中OR条件的正确写法,修正后的代码如下:

where: {
  type: "active",
  OR: [
    {
      NOT: { restrictions: { some: { country: "US", allow: 0 } } },
    },
    {
      restrictions: { some: { allow: 1, country: { not: "US" } } }, 
    },
  ],
},

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:20:43