登录
首页 >  Golang >  Go问答

从数据存储中读取数据的方法:使用 Ancestor 查询和最新的 golang 库

来源:stackoverflow

时间:2024-03-03 10:03:28 448浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《从数据存储中读取数据的方法:使用 Ancestor 查询和最新的 golang 库》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我想读取数据存储类型中的所有实体(大约 6 个实体/记录)。

我有一个数据存储区,它的关键是我试图理解的一种奇怪的类型。我在执行查询的键上找不到任何唯一性。 表格如下所示: GCP 数据存储区代表我想要读入 Go 应用的数据

当我点击一条记录时,它看起来像这样: 从这里开始公开并使用关键文字来尝试获取 Go 应用程序中的记录

``我可以在控制台中执行祖先查询,如下所示:```` 使用 Ancestor 查询查询 GCP 数据存储区

太棒了!那么现在我想从我的 Golang 应用程序检索这些数据?但如何呢? 我在网上看到很多关于使用 q.Get(...) // where q is a *Query struct 的解决方案 这些解决方案均无效,因为它们导入 google.golang.org/appengine/datastore。我知道这是遗留的并且已被弃用。所以我想要一个导入 cloud.google.com/go/datastore 的解决方案。

我尝试了一些方法,但运气不佳: 首先尝试使用 GetAll 和查询

我接下来尝试了这个: 第二次尝试使用祖先查询...尚未准备好

最后我尝试直接获取一条记录: 最后我尝试直接获取记录

在所有情况下,我的 err 都不为零,并且应从数据存储查询填充的 dts 也为零。

有任何指导可以帮助我了解如何查询此键类型吗?我是否遗漏了该表的键入和查询方式的一些基本内容?

谢谢

然后我尝试了这个:


解决方案


看来您只是缺少您的命名空间

// Merchant Struct
type MerchantDetails struct {
    MEID  string
    LinkTo *datastore.Key
    Title string
}

// Struct array to store in
var tokens []MerchantDetails

// Ancestor Key to filter by
parentKey := datastore.NameKey("A1_1113", "activate", nil)
parentKey.Namespace = "Devs1"

// The call using the new datastore UI. Basically query.Run(), but datastore.GetAll()
keys, err := helpers.DatastoreClient.GetAll(
    helpers.Ctx,
    datastore.NewQuery("A1_1112").Ancestor(parentKey).Namespace("Devs1"),
    &tokens,
)
if err != nil {
 return "", err
}

// Print all name/id from the found values
fmt.Printf("keys: %v", keys)

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>