Перейти к запросу BoltDB с использованием условий Bolthold 3

Итак, у меня был этот вопрос раньше, и у меня был ответ под вопросом, который сработал, но я только что понял, что запрос, который я получил, не работает, как планировалось.

В основном сейчас, если это работает так

(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))

Кто-нибудь знает, как это решить?

🤔 А знаете ли вы, что...
Go стал популярным языком для разработки смарт-контрактов на блокчейне Ethereum.


2
29
1

Ответ:

Решено

Пытаться:

query := bolthold.
         Where(tenantIDKey).Eq("").
         Or(
           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)...)