cod*_*sam 5 google-cloud-datastore
**更新**
感谢Alfred Fuller指出我需要为此查询创建手动索引.
不幸的是,从.NET应用程序使用JSON API,似乎没有官方支持的方法.事实上,从App Engine以外的应用程序来看,似乎没有正式的方法可以做到这一点,这很奇怪,因为Cloud Datastore API旨在允许访问App Engine之外的数据存储区.
我能找到的最接近的黑客是使用RPC将索引定义发布到http://appengine.google.com/api/datastore/index/add.有人可以给我一些关于如何准确执行此操作的原始规范(即URL参数,身体究竟应该是什么样的等等),也许使用Fiddler来检查appcfg.cmd的调用?
**原始问题**
根据文档,"查询可以结合不同属性的等式(EQUAL)过滤器,以及单个属性上的一个或多个不等式过滤器".
但是,此查询失败:
{
"query": {
"kinds": [
{
"name": "CodeProse.Pogo.Tests.TestPerson"
}
],
"filter": {
"compositeFilter": {
"operator": "and",
"filters": [
{
"propertyFilter": {
"operator": "equal",
"property": {
"name": "DepartmentCode"
},
"value": {
"integerValue": "123"
}
}
},
{
"propertyFilter": {
"operator": "greaterThan",
"property": {
"name": "HourlyRate"
},
"value": {
"doubleValue": 50
}
}
},
{
"propertyFilter": {
"operator": "lessThan",
"property": {
"name": "HourlyRate"
},
"value": {
"doubleValue": 100
}
}
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过以下回复:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "FAILED_PRECONDITION",
"message": "no matching index found.",
"locationType": "header",
"location": "If-Match"
}
],
"code": 412,
"message": "no matching index found."
}
}
Run Code Online (Sandbox Code Playgroud)
JSON API尚不支持本地索引生成,但我们已经记录了一个流程,您可以通过该流程生成索引的xml定义,网址为https://developers.google.com/datastore/docs/tools/indexconfig#Datastore_Manual_index_configuration
请试一试,如果不起作用,请告诉我们.
这是一个临时解决方案,我们希望尽快替换自动本地索引生成.