Maison  >  Article  >  développement back-end  >  Comment chaîner plusieurs filtres sur la base de données Postgres à l'aide de Golang et supabase ?

Comment chaîner plusieurs filtres sur la base de données Postgres à l'aide de Golang et supabase ?

王林
王林avant
2024-02-09 15:03:08498parcourir

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

l'éditeur php Yuzai vous présente aujourd'hui une méthode de liaison de plusieurs filtres sur la base de données Postgres à l'aide de Golang et supabase. Au cours du processus de développement, nous devons souvent interroger et filtrer la base de données, et la combinaison de plusieurs filtres peut répondre à nos besoins de manière plus flexible. En combinant le langage de programmation Golang et le service de base de données supabase, nous pouvons facilement atteindre cet objectif. Cet article vous fournira une analyse détaillée des méthodes de mise en œuvre spécifiques pour vous aider à mieux les appliquer dans des projets réels.

Contenu de la question

J'ai donc une configuration de base de données supabase postgres et j'essaie de configurer une API pour cette base de données à l'aide de gin. J'utilise nedpals/supabase-go pour me connecter à mon client supabase. J'essaie d'enchaîner plusieurs filtres en fonction des paramètres de requête comme ceci :

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

Ceci est basé sur la documentation Supabase JS qui permet plusieurs filtres "In". Mais lorsque j'essaie de faire cela, je reçois toujours une erreur où results.In undefined (type []any has no field or method In) 基本上 In n'est pas une méthode applicable pour le résultat, même si elle devrait être basée sur la documentation. p>

S'il vous plaît, aidez haha

Solution de contournement

Votre code actuel fait en fait ce qui suit :

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

results est une tranche, donc, comme le dit l'erreur, "n'a pas de champ ni de méthode In".

In Besoin d'exécuter le filtre avant d'exécuter la requête quelque chose comme ce qui suit (non testé !) :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer