我无法查询 2 个属性的 GQL,只有通配符有效

我将comment实体存储在 Datastore 中,并Datastore Viewer用于查看存储的数据。


我可以做以下查询


select * from comment    

select __key__ from comment

select Subject from comment

select Comment from comment

但我无法查询


select Subject, Comment from comment

// Error: The suggested index for this query is:

//    - kind: comment

//      properties:

//      - name: Comment

//      - name: Subject

select __key__, Subject, Comment from comment

// Error: projections are not supported for the property: __key__

我找不到任何参考为什么它是错误的。这些错误并没有告诉我太多。


我没有为这些实体设置任何键或索引。


文档说明如下:


SELECT [DISTINCT] [* | <property list> | __key__]

  [FROM <kind>]

  [WHERE <condition> [AND <condition> ...]]

  [ORDER BY <property> [ASC | DESC] [, <property> [ASC | DESC] ...]]

  [LIMIT [<offset>,]<count>]

  [OFFSET <offset>]


  <property list> := <property> [, <property> ...]

  <condition> := <property> {< | <= | > | >= | = | != } <value>

  <condition> := <property> IN <list>

  <condition> := ANCESTOR IS <entity or key>

  <list> := (<value> [, <value> ...]])

Subject, Comment- 是属性列表,它是有效的查询。但事实并非如此。我从 Go 代码创建了实体。


慕斯王
浏览 192回答 1
1回答

回首忆惘然

投影查询有一些限制。在projection-doc中提到了"Only indexed properties can be projected".第一条错误消息准确地显示了 的组合索引Subject, Comment尚不存在。您可以通过添加手动创建索引- kind: comment&nbsp; properties:&nbsp; - name: Comment&nbsp; - name: Subject到您index.yaml的项目根文件夹中。请查看索引规范和投影文档。// Error: projections are not supported for the property: __key__实体keys由 GetAll 方法返回。不要把它们放在你的投影中。keys, err := q.GetAll(c, &people)我还不能发布超过 2 个链接,因此请在数据存储参考中查找更多详细信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go