如何使用Golang和supabase在Postgres数据库上链接多个过滤器?

xkftehaa  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(104)

所以我有一个supabase postgres数据库设置,我试图使用gin为该数据库设置一个API。我正在使用nedpals/supabase-go连接到我的supplier客户端。我尝试根据请求参数链接多个过滤器,如下所示:

func GetCardsByAdvanceSearch(supabase *supa.Client) gin.HandlerFunc {
    fn := func(context *gin.Context) {
        sets, isSets := context.GetQueryArray("setCode")
        colors, isColors := context.GetQueryArray("color")

        var results []any

        err := supabase.DB.From("cards").Select("*").Execute(&results)

        if(isColors) { results.In("colors", colors)}
        if(isSets) { results.In("set_code", sets)}

        if err != nil {
            panic(err)
        }
        context.JSON(http.StatusOK, gin.H{
            "Results": results,
        })
    }
    return gin.HandlerFunc(fn)
}

这是基于SupplyJS文档,它允许多个“In”过滤器。但是当我尝试这样做的时候,我总是得到错误,基本上results.In undefined (type []any has no field or method In)不是一个适用于结果的方法,即使它应该基于文档。
帮帮忙,lol

nbysray5

nbysray51#

您当前的代码实际上是在做这样的事情:

var results []any
results.In("colors", colors)

results是一个切片,因此,正如错误所述,“没有字段或方法In”。
In需要在执行查询之前针对过滤器运行;以下是一些类似的东西(未经测试!):

srb := supabase.DB.From("cards").Select("*")
if(isColors) {srb.In("colors", colors)}
if(isSets) {srb.In("set_code", sets)}

var results []any
err := srb.Execute(&results)

相关问题