【发布时间】:2017-12-14 10:33:38
【问题描述】:
我正在尝试编写一个类似 Twitter 的微博应用程序。为此,我使用了 Google App Engine 和 Datatstore。
我有两节课。作为父级的 Tweet 类:
class Tweet(EndpointsModel):
_message_fields_schema = ('sender','body', 'name')
sender = ndb.StringProperty()
body = ndb.TextProperty()
created = ndb.DateTimeProperty(auto_now=True)
...
还有 TweetIndex 类,它是包含所有推文接收者的子类。
class TweetIndex(EndpointsModel):
...
receivers = ndb.PickleProperty(indexed=True,repeated=True)
created = ndb.DateTimeProperty(auto_now=True)
...
@TweetIndex.method(request_fields=('receivers',),
path='mymodels', name='mymodel.list')
def MyModelList(self, query):
if not query.from_datastore:
raise endpoints.NotFoundException('MyModel not found.')
return query
我正在尝试使用 API 方法 MyModelList 查询 TweetIndex 实体,其目的是在接收者数组中包含给定 id 时返回 TweetIndex 实体。
接收器数组示例:
["13911772075915175317","1855429131779793831", ... ]
在数据存储区中看起来像这样(存储为 blob):
["gAJYEwAAADY1NjU2NDM3MzA1NDI2NDU5ODlxAS4=","gAJYEwAAADU4MDM3MjE4OTEyNDgzNzgyNjNxAS4=",...]
但是,在执行以下 API 请求时:
POST https://myapi/.../v1/mymodels
{
"receivers": [
"13911772075915175317"
]
}
返回如下:
404
- Show headers -
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "MyModel not found."
}
],
"code": 404,
"message": "MyModel not found."
}
}
“13911772075915175317”在接收器数组中至少存在一次。 我还尝试在请求中输入 blob(但并不奇怪)也没有工作。
我应该如何正确查询这个数组?
【问题讨论】:
标签: google-app-engine google-cloud-datastore app-engine-ndb endpoints-proto-datastore