node.js - 错误: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
我必须实际创建一个具有推荐顺序的新索引吗?或者有没有办法我可以做到这一点而不必制作另一个索引?谢谢!
解决方案
是的,您需要创建一个新索引,您显示的现有索引不等效,因此它不能用于您的查询 - 属性顺序很重要(至少对于不等式过滤器和排序)。请参阅相关的 Google Datastore 复合索引问题
推荐阅读
- python - 使用 pymatlab 从 Python 脚本调用 Matlab 函数
- python - 字典更新序列元素 #0 错误
- node.js - 无法理解异步/等待
- python - Google Cloud Dataflow Python SDK 更新
- c# - 嵌套列表和 Automapper.Map
- r - 在 Data.Table 中保留标签列时的行子集
- javascript - MobX:如何绑定@computed 函数(如@action.bound)?
- python - 将 DataFrame 列拆分为两个 + MultiIndex
- twitter-bootstrap-3 - 键盘选择后引导单选按钮组发布错误的值
- swift - Swift NumberOfRowsInSection void 函数中的意外非 void 返回值