返回顶部
首页 > 资讯 > 后端开发 > GO >当路径中的数据不存在时,如何使用 Go Firebase-Admin SDK 检测空结果
  • 948
分享到

当路径中的数据不存在时,如何使用 Go Firebase-Admin SDK 检测空结果

2024-04-04 23:04:32 948人浏览 八月长安
摘要

知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个golang开发实战,手把手教大家学习《当路径中的数据不存在时,如何使用 Go Firebase-Admin SDK 检测空结果》,

知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个golang开发实战,手把手教大家学习《当路径中的数据不存在时,如何使用 Go Firebase-Admin SDK 检测空结果》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我使用以下代码从 firebase 实时数据库获取对象。

type Item struct {
    title string `JSON:"title"`
}
var item Item
if err := db.NewRef("/items/itemid").Get(ctx, &item); err != nil {
    log.Infof(ctx, "An error occured %v", err.Error())
}
log.Infof(ctx, "Item %v", item)

如果实时数据库中的给定路径不存在数据,sdk 将不会返回错误,相反,我最终会在变量 item 中得到一个空结构。

检测路径中的数据不存在的最干净/最可读的方法是什么?

我已经搜索了几个小时,但找不到这个问题的明确答案。


解决方案


这是解决此问题的一种方法:

type NullableItem struct {
    Item struct {
        Title string `json:"title"`
    }
    IsNull bool
}

func (i *NullableItem) UnmarshalJSON(b []byte) error {
    if string(b) == "null" {
        i.IsNull = true
        return nil
    }

    return json.Unmarshal(b, &i.Item)
}

func TestGetNonExisting(t *testing.T) {
    var i NullableItem
    r := client.NewRef("items/non_existing")
    if err := r.Get(context.Background(), &i); err != nil {
        t.Fatal(err)
    }
    if !i.IsNull {
        t.Errorf("Get() = %v; want IsNull = true", i)
    }
}

作为最佳实践,您还应该实现 marshaljson() 函数。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

您可能感兴趣的文档:

--结束END--

本文标题: 当路径中的数据不存在时,如何使用 Go Firebase-Admin SDK 检测空结果

本文链接: https://lsjlt.com/news/596036.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作