首頁  >  文章  >  後端開發  >  如何使用 Golang 和 supabase 在 Postgres 資料庫上連結多個過濾器?

如何使用 Golang 和 supabase 在 Postgres 資料庫上連結多個過濾器?

王林
王林轉載
2024-02-09 15:03:08449瀏覽

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

php小編魚仔今天為大家介紹一種使用Golang和supabase在Postgres資料庫上連結多個過濾器的方法。在開發過程中,我們經常需要對資料庫進行查詢和篩選,而多個過濾器的組合使用可以更靈活地滿足我們的需求。透過結合Golang程式語言和supabase資料庫服務,我們可以輕鬆實現這一目標。本文將為您詳細解析具體的實作方法,幫助您更好地應用於實際專案中。

問題內容

所以我有一個 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)
}

這基於允許多個「In」過濾器的 Supabase JS 文件。但是當我嘗試這樣做時,我不斷收到錯誤,其中results.In undefined (type []any has no field or method In) 基本上In 不是結果的適用方法,即使它應該基於文檔。 p>

請幫忙哈哈

解決方法

您目前的程式碼實際上正在執行以下操作:

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

results 是一個切片,因此,如錯誤所述,「沒有欄位或方法 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)

以上是如何使用 Golang 和 supabase 在 Postgres 資料庫上連結多個過濾器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除