使用 Firestore 本机进行对象化 - 未找到匹配的索引
Objectify with Firestore native - no matching index found
我有一组非常简单的 Java 对象,我使用 Objectify 6.0.7 存储在 Google Firestore 数据库(本机模式)中。存储、删除和查询对象都可以正常工作,但是在单个字段上使用 orderBy 子句的查询会失败,并显示“找不到匹配的索引”。完全相同的代码在 Datastore 项目中完美运行(因此 Java 代码不存在问题)。
我找不到关于 Objectify 是否可以与 Firestore 一起使用的明确文档,我怀疑这就是问题所在。想法?
这是查询:
ofy().load().type(Flight.class).order("-date").list();
这是该集合中的示例记录(法语区域设置,但日期对象有效):
airTime: "0.8666666666666667"
date: 20 décembre 2020 à 19:51:41 UTC-5
engineStartTime: 20 décembre 2020 à 19:51:41 UTC-5
engineStopTime: 20 décembre 2020 à 21:14:41 UTC-5
flightTime: 1.3833333333333333
from: "CYQB"
landingTime: 20 décembre 2020 à 21:08:41 UTC-5
takeOffTime: 20 décembre 2020 à 20:16:41 UTC-5
to: "CYVB"
使用升序,例如order("desc")
也失败了,但是从查询中完全删除 .order('-desc')
函数不会导致任何错误,但当然 returns 会导致随机顺序。
我从文档中了解到,所有单字段索引都应默认在 Firestore 中创建,但我看不到在控制台中创建单字段索引的方法。因此,我假设订单函数中使用的 date
字段存在索引。
Objectify v6 使用 com.google.cloud:google-cloud-datastore 库作为低级 API。我很确定该库只能在数据存储模式下工作。 Google 有一个完全不同(并且更原始)的 Java Firestore 模式库。
所以我认为您现在需要使用 Datastore 模式而不是 Firestore 模式。
我有一组非常简单的 Java 对象,我使用 Objectify 6.0.7 存储在 Google Firestore 数据库(本机模式)中。存储、删除和查询对象都可以正常工作,但是在单个字段上使用 orderBy 子句的查询会失败,并显示“找不到匹配的索引”。完全相同的代码在 Datastore 项目中完美运行(因此 Java 代码不存在问题)。
我找不到关于 Objectify 是否可以与 Firestore 一起使用的明确文档,我怀疑这就是问题所在。想法?
这是查询:
ofy().load().type(Flight.class).order("-date").list();
这是该集合中的示例记录(法语区域设置,但日期对象有效):
airTime: "0.8666666666666667"
date: 20 décembre 2020 à 19:51:41 UTC-5
engineStartTime: 20 décembre 2020 à 19:51:41 UTC-5
engineStopTime: 20 décembre 2020 à 21:14:41 UTC-5
flightTime: 1.3833333333333333
from: "CYQB"
landingTime: 20 décembre 2020 à 21:08:41 UTC-5
takeOffTime: 20 décembre 2020 à 20:16:41 UTC-5
to: "CYVB"
使用升序,例如order("desc")
也失败了,但是从查询中完全删除 .order('-desc')
函数不会导致任何错误,但当然 returns 会导致随机顺序。
我从文档中了解到,所有单字段索引都应默认在 Firestore 中创建,但我看不到在控制台中创建单字段索引的方法。因此,我假设订单函数中使用的 date
字段存在索引。
Objectify v6 使用 com.google.cloud:google-cloud-datastore 库作为低级 API。我很确定该库只能在数据存储模式下工作。 Google 有一个完全不同(并且更原始)的 Java Firestore 模式库。
所以我认为您现在需要使用 Datastore 模式而不是 Firestore 模式。