gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:20:20 25 4
gpt4 key购买 nike

我正在使用以下代码从 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() 函数。

关于firebase - 当路径中的数据不存在时如何使用 Go Firebase-Admin SDK 检测空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55025369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com