**更新**谷歌雲存儲runQuery返回412「沒有匹配的索引中找到」
感謝艾爾弗雷德·福勒的指出,我需要創建這個查詢手動索引。
不幸的是,從.NET應用程序使用JSON API,似乎沒有官方支持的方式。事實上,從App Engine以外的應用程序看來,這似乎沒有辦法做到這一點,這很奇怪,因爲Cloud Datastore API旨在允許訪問App Engine之外的數據存儲區。
我能找到的最接近的黑客是POST the index definition using RPC到http://appengine.google.com/api/datastore/index/add。有人可以給我原始的規範,如何準確地做到這一點(即URL參數,身體應該看起來像什麼等),也許使用Fiddler來檢查appcfg.cmd所做的調用?
**原來的問題**
按照docs「的查詢可以在單個屬性結合平等(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
}
}
}
]
}
}
}
}
與以下響應:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "FAILED_PRECONDITION",
"message": "no matching index found.",
"locationType": "header",
"location": "If-Match"
}
],
"code": 412,
"message": "no matching index found."
}
}
感謝阿爾弗雷德!看到我對這個問題的更新。不幸的是,我使用的是JSON API,並沒有使用App Engine SDK(這將允許我輕鬆包含索引def文件)。 –