所以我之前有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相关问答推荐

使用 bolthold 3 条件进行 boltDB 查询

GOENV 只能使用 OS 环境设置

Golang API 的 HTTPS

如何从字符串中删除多个换行符`\n`但只保留一个?

手动将 OpenTelemetry 上下文从 golang 提取到字符串中?

Golang 'defer' 导致发送(接收)API 响应延迟

处理程序中的无限循环

如何在 Gorm 中获得特定日期的最大值?

不能使用 *T 类型的变量作为参数类型

如何使用 context.WithCancel 启动和停止每个会话的心跳?

Go:为“一组”单个结果实现 ManyDecode

Golang 泛型同时具有接口和实现

如何访问Go 1.18泛型结构(structs)中的共享字段

如何嵌入文件以供以后解析执行使用

linter err113: do not define dynamic errors, use wrapped static errors instead

errors.Wrapf()、errors.Errorf() 和 fmt.Errorf() 之间有什么区别?

Go 如何处理 Google App Engine 上的并发请求

go.mod 中的“ incompatible”是什么意思?

如何使用 Go 模块修复 Go 构建错误“can't load package”?

在 go 中复制一个文件夹