所以我之前有this question个,我在问题下面有一个答案,这个答案是有效的,但我刚刚意识到我提出的问题并没有按计划进行.

基本上现在,如果它像这样工作

(if the roleskey contains any of the roles in slice) and (if the tenantID is an empty string) or (if tenantIDKey is equal to tenantID)

但我需要的是

(if the roleskey contains any of the roles in slice) AND (if the tenantID is an empty string OR if tenantIDKey is equal to tenantID)

以下是我目前的问题:

query := bolthold.Where(roleskey).ContainsAny(bolthold.Slice(roles)...).And(tenantIDKey).Eq("").Or(bolthold.Where(tenantIDKey).Eq(tenantID))

有人知道怎么解决这个问题吗?

推荐答案

try :

query := bolthold.
         Where(tenantIDKey).Eq("").
         或(
           bolthold.
           Where(tenantIDKey).
           Eq(tenantID)
         ).
         And(roleskey).
         ContainsAny(bolthold.Slice(roles)...)

query := bolthold.
         Where(tenantIDKey).ContainsAny("", tenantID).
         And(roleskey).
         ContainsAny(bolthold.Slice(roles)...)

query := bolthold.
         Where(tenantIDKey).In("", tenantID).
         And(roleskey).
         ContainsAny(bolthold.Slice(roles)...)

Go相关问答推荐

try 用GitHub操作中的release标签更新version. go文件,但失败了

如何修复在Go API中使用Gin Framework的请求资源上没有使用Gin Framework的请求源的消息?''

调用API时使用nginx作为反向代理时从nginx获取502坏网关

具有GRPC的RBAC(基于角色的访问控制)-网关生成的REST风格的API

未对GoFr中的所有请求进行跟踪

Kafka架构注册表-Broker:Broker无法验证记录

go mod tidy会自动升级go.mod中的go版本吗?

Go 中的sync.Cond 与 Wait 方法

io.Reader 无限循环与 fmt.Fscan

从单词中删除特殊字符

类型/ struct 函数的 GoDoc 示例函数

仅在工作日运行 cron

如何在 golang revel 中获取动态应用程序配置

如何将具有嵌入式 struct 的 struct 展平为 json

函数超时和 goroutine 泄漏

Golang 工作池实现意外工作

如何在 Golang 中使用具有相同名称或特定关键字的行或列重新排列/排序 CSV

Go 导入范围查找 protobuf 类型

将基本 HTTP AUth 用户/密码凭据存储在 GO 中,无需外部包

从 map 返回空数组而不是空字符串数组