Maison > développement back-end > Golang > le corps du texte

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

王林
Libérer: 2024-02-09 15:03:08
avant
474 Les gens l'ont consulté

如何使用 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)
}
Copier après la connexion

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.

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)
Copier après la connexion

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)
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!