How to chain multiple filters on Postgres database using Golang and supabase?

王林
Release: 2024-02-09 15:03:08
forward
474 people have browsed it

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

php Xiaobian Yuzai today introduces a method of linking multiple filters on the Postgres database using Golang and supabase. During the development process, we often need to query and filter the database, and the combination of multiple filters can meet our needs more flexibly. By combining the Golang programming language and supabase database service, we can easily achieve this goal. This article will provide you with a detailed analysis of the specific implementation methods to help you better apply them in actual projects.

Question content

So I have a supabase postgres database setup and I'm trying to use gin to setup the API for that database. I'm using nedpals/supabase-go to connect to my supabase client. I'm trying to chain multiple filters based on request parameters like this:

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)
}
Copy after login

This is based on the Supabase JS documentation which allows multiple "In" filters. But when I try to do this I keep getting errors where results.In undefined (type []any has no field or method In) basically In is not applicable to results method, even though it should be based on documentation.

Please help haha

Solution

Your current code is actually doing the following:

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

results is a slice, so, as the error says, "There is no field or method In".

In Need to run against the filter before executing the query; something like the following (untested!):

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)
Copy after login

The above is the detailed content of How to chain multiple filters on Postgres database using Golang and supabase?. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!