【问题标题】:Kindless Queries in App Engine GoApp Engine Go 中的 Kindless 查询
【发布时间】:2013-02-19 01:42:28
【问题描述】:

在 Python 中是

q = db.Query()
q.ancestor(ancestor_key)

我试过了:

q := datastore.NewQuery("")
q.Ancestor(ancestor_key)

运行 GetAll 时出现错误“datastore: empty kind”

我也试过了:

q := &datastore.Query{}
q.Ancestor(ancestor_key)

我收到错误“数据存储:空查询类型”

在此先感谢您对此事的任何帮助。

【问题讨论】:

  • 我认为 Go 不支持 Python kindless 祖先查询。有那么一瞬间,我以为你可以使用祖先键的 Kind() 方法,然后我又喝了一些咖啡,然后清醒过来。

标签: google-app-engine google-cloud-datastore go


【解决方案1】:

func NewQuery

func NewQuery(kind string) *Query

NewQuery 为特定实体类型创建一个新查询。那种必须 非空。

在您的代码中,

q := datastore.NewQuery("")

种类是空的。

【讨论】:

  • 这会破坏它成为“无心”查询的目的。我明白你的意思;我只是想表明我在发帖之前确实尝试过。我认为这就是它在 SO 上所做的方式。
【解决方案2】:

Rich Churcher 的评论似乎是正确的,至少目前是这样。

我认为 Go 不支持 Python kindless 祖先查询。 有那么一刻我以为你可以使用祖先键的 Kind() 方法,然后我又喝了一些咖啡,然后恢复了理智。

【讨论】:

    【解决方案3】:

    GetAll 似乎不起作用,但你可以做一些无情的查询。

    ctx := appengine.NewContext(r)
    q := datastore.NewQuery("")
    for it := q.Run(ctx); ; {
      key, err := t.Next(nil)
      if err == datastore.Done {
        break
      }
      if err != nil {
        break
      }
      fmt.Printf("%v\n", key)
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 2014-09-23
      • 2017-11-02
      • 1970-01-01
      • 2013-04-01
      • 2011-07-24
      • 2011-07-05
      • 2012-07-23
      • 2015-06-27
      相关资源
      最近更新 更多