因此,我有一个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)