使用 bolthold 进行 boltDB 查询

Go boltDB query using bolthold

我正在尝试使用 Go 为 boltDB 创建一个查询。

我必须有一个查询来检查角色和租户 ID。基本上,该项目必须始终包含该角色,如果该项目具有 tenantID,它也必须匹配,但是如果该项目没有 tenantID(如果为零),它也必须 return 它。

所以我想出了下面的查询来检查角色和 tenantID,但不检查 tenantID 是否为 nil。谁能帮我解决这个问题?考虑到 nil 的租户 ID,我需要向此查询添加什么?

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

您可以使用Or条件来检查它是否等于tenantIDKeyIsNil

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

您也可以用 In 代替 ContainsAny

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