首页 > 解决方案 > 错误:FAILED_PRECONDITION:找不到匹配的索引。推荐指数为:

问题描述

所以我试图在谷歌云的数据存储上运行一个查询:

let query = datastore.createQuery(dataType)
    .select(["id", "version", "lm", "name"])
    .filter("owner", "=", request.params.owner)
    .filter("lm", ">=", request.query.date_start)
    .groupBy(["lm"])
    .order("lm")

但是我遇到了一个错误,指出

no matching index found. recommended index is:
- kind: Entry
  properties:
  - name: lm
  - name: id
  - name: name
  - name: version

当我使用id而不是lm所有方法运行查询时,我没有遇到任何错误。这是因为在我的index.yaml文件中我有这样的索引:?

- kind: Entry
  properties:
  - name: id
  - name: version
  - name: lm
  - name: name

我必须实际创建一个具有推荐顺序的新索引吗?或者有没有办法我可以做到这一点而不必制作另一个索引?谢谢!

标签: node.jsgoogle-cloud-platformgoogle-cloud-datastoredatastoregoogle-query-language

解决方案


是的,您需要创建一个新索引,您显示的现有索引等效,因此它不能用于您的查询 - 属性顺序很重要(至少对于不等式过滤器和排序)。请参阅相关的 Google Datastore 复合索引问题


推荐阅读