Google App Engine for Golang中将index.yaml导入到哪里?

时间:2018-07-20 13:44:46

标签: google-app-engine go

使用书架教程和Auth软件包。

ListBooksCreatedBy查询失败,并显示以下错误:

could not list books: datastoredb: could not list books: rpc error: code = FailedPrecondition desc = no matching index found. recommended index is:   
- kind: Book   
  properties:   
  - name: CreatedByID   
  - name: Title  

但是,index.yaml确实存在,并且与app.yaml位于同一目录中:
索引YAML内容:

indexes:   

# This index enables filtering by "CreatedByID" and sort by "Title".   
- kind: Book   
  properties:   
  - name: CreatedByID   
    direction: asc   
  - name: Title   
    direction: asc   

为什么不导入索引?

index.yaml在Golang App Engine代码中的哪里导入?

我搜索了src,却一无所获。

1 个答案:

答案 0 :(得分:2)

index.yaml文件不打算在您的应用程序代码中导入/使用,而是打算部署到Datastore服务(与应用程序部署单独/独立地进行!)以配置其索引活动。来自Updating indexes

  

您将index.yaml配置文件上传到Cloud Datastore   使用gcloud命令。如果index.yaml文件定义了任何索引   Cloud Datastore中不存在的索引,这些新索引就会建立。

     

Cloud Datastore可能需要一段时间才能创建所有索引,并且   因此,这些索引不会立即提供给App Engine。   如果您的应用已配置为接收流量,则出现异常   对于需要仍在索引中的索引的查询,可能会发生   建立过程。

     

为避免出现异常,必须为所有索引建立时间。

只有在正确部署并在需要时完成索引更新操作(即索引达到Serving状态)之后,需要该索引的应用程序查询才能正常工作。

本地开发服务器在其数据存储区仿真中也使用index.yaml文件。默认情况下,它会为遇到的查询自动使用必要的索引更新文件,但该文件不会自动部署到数据存储区。但是您可以使用--require_indexes选项禁用此行为。来自Local Development Server Options

  

--require_indexes=yes|no

     

禁止自动生成index.yaml文件中的条目。   相反,当应用程序进行查询时要求   在文件中定义索引,但找不到索引定义,   将引发异常,类似于在   App Engine。默认值为no