Могу ли я получить данные json документа faunaDB за один снимок с помощью Go API? - PullRequest
1 голос
/ 13 февраля 2020

С помощью Go API-интерфейса faunaDB я могу определить структуру для размещения фундаментального БД следующим образом:

type LabelData struct {
    RedirectURL   string `fauna:"redirectURL"`
    Owner         string `fauna:"owner"`
    RedirectCount int    `fauna:"redirectCount"`
}

Затем я могу вызвать Create для структуры данных метки в одном кадре с labelData следующим образом:

    labelData := LabelData{
        RedirectURL:   "",
        Owner:         "",
        RedirectCount: 0,
    }
    newlabel, _ := client.Query(
        f.Create(
            f.Collection("label"),
            f.Obj{"data": labelData},
        ),
    )

У меня вопрос: могу ли я получить данные документа , созданного выше , в один снимок для типа LabelData ценных ? В настоящее время я получаю его для каждого элемента типа LabelData следующим образом:

func faunaLabelInfo(id string) (owner string, redirectCount int, redirectURL string, err error) {
    var data f.Value
    ret, err := client.Query(f.Get(f.RefCollection(f.Collection("label"), documentID)))
    err = ret.At(f.ObjKey("data")).Get(&data)
    err = data.At(f.ObjKey("owner")).Get(&owner)
    err = data.At(f.ObjKey("redirectCount")).Get(&redirectCount)
    err = data.At(f.ObjKey("redirectURL")).Get(&redirectURL)

Я ожидал следующего, но это неправильно.

var labelData LabelData
ret.At(f.ObjKey("LabelData")).Get(&labelData)

Спасибо за ваше предложение !

1 Ответ

2 голосов
/ 13 февраля 2020

я сделал полный рабочий пример на основе docker (docker run --rm --name faunadb -p 8443:8443 fauna/faunadb):

package main

import (
    "fmt"

    f "github.com/fauna/faunadb-go/faunadb"
)

type LabelData struct {
    RedirectURL   string `fauna:"redirectURL"`
    Owner         string `fauna:"owner"`
    RedirectCount int    `fauna:"redirectCount"`
}

var (
    data = f.ObjKey("data")
    ref  = f.ObjKey("ref")
)

func main() {
    var labelId f.RefV
    config := f.Endpoint("http://localhost:8443")
    client := f.NewFaunaClient("secret", config)
    labelData := LabelData{
        RedirectURL:   "",
        Owner:         "",
        RedirectCount: 0,
    }
    // Create a collection to store labels
    _, _ = client.Query(f.CreateCollection(f.Obj{"name": "label"}))

    newlabel, err := client.Query(
        f.Create(
            f.Collection("label"),
            f.Obj{"data": labelData},
        ),
    )
    if err != nil {
        return
    }

    // Get generated label ID
    _ = newlabel.At(ref).Get(&labelId)
    fmt.Println(labelId)

    // Retrieve label by its ID
    value, _ := client.Query(f.Get(labelId))

    var newLabelData LabelData
    _ = value.At(data).Get(&newLabelData)
    fmt.Println(newLabelData.RedirectURL)
    fmt.Println(newLabelData.Owner)
    fmt.Println(newLabelData.RedirectCount)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...