因此,我有一个Supabase Postgres数据库设置,我正在尝试使用GIN为该数据库设置API。我正在使用nedpals/supabase-go连接到我的Supabase客户端。我正在尝试根据类似的请求参数链接多个过滤器:

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

这基于supabase JS文档,该文档允许多个"In"过滤器。但是,当我尝试这样做时,我会不断遇到错误,即使In基本上不是结果的适用方法,即使它应该基于文档。

帮助请大声笑

分析解答

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

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

results是一个切片,如错误所述"has no field or method 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)