为了账号安全,请及时绑定邮箱和手机立即绑定

我可以使用 Go API 一次性获取动物数据库文档的 json 数据吗?

我可以使用 Go API 一次性获取动物数据库文档的 json 数据吗?

Go
炎炎设计 2022-05-18 10:15:39
使用 AnimalDB 的 Go API,我可以定义一个结构来发布 founaDB,如下所示:type LabelData struct {    RedirectURL   string `fauna:"redirectURL"`    Owner         string `fauna:"owner"`    RedirectCount int    `fauna:"redirectCount"`}然后我可以使用labelData 一次性为Label Data 结构调用 Create,如下所示:    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 LabelDataret.At(f.ObjKey("LabelData")).Get(&labelData)谢谢您的建议!
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

我基于 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)

}


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号