如何 运行 Golang 中的数据存储区 GQL 查询?

How to run a Datastore GQL query in Golang?

我在 GQL 中有以下查询:

"SELECT * FROM Task WHERE Uuid = \"FOOBAR\" ORDER BY CreateTimeMs DESC LIMIT 1"

如何在 Golang 中直接 运行 这个查询?

query := datastore.NewQuery("SELECT * FROM Task WHERE Uuid = \"FOOBAR\" ORDER BY CreateTimeMs DESC LIMIT 1")好像不对

更新:
我很清楚Query types。问题是我想直接使用 GQL 而不是将它们转换为查询类型。

看看 Query 类型的文档,通过查看它的方法和阅读它们各自的文档,你应该能够理解如何将你的 SQL 翻译成 datastore.Query 特定的方法调用。

例如你的sql可以写成:

q := datastore.NewQuery("Task").Filter("Uuid =", "FOOBAR").Order("-CreateTimeMs").Limit(1)

这只是构建您的查询值,要获得您需要的实际结果 run the query to get an iterator whose Next method 可用于读取结果。

如果您想避免 运行-iterate-next 舞蹈,您可以使用 GetAll 查询方法。

var tt = []*Task{}
q := datastore.NewQuery("Task").Filter("Uuid =", "FOOBAR").Order("-CreateTimeMs").Limit(1)
if _, err := q.GetAll(tt); err != nil {
    panic(err)
}
log.Println(tt[0]) // your task

在此处阅读更多内容:

当我在 GQL documentation 中看到这篇笔记时,我正在寻找解决完全相同的问题的方法:

Note: Google Cloud Client Library for Java and Google Cloud Client Library for Ruby support GQL, but other Google Cloud client libraries do not.

所以这是不行的...

但是,通过 REST api projects.runQuery 实现它应该是可行的,但是您必须自己将结果解组为结构。