0
트위터와 같은 마이크로 블로깅 애플리케이션을 코딩하려고합니다. 이를 위해 Google App Engine과 Datatstore를 사용하고 있습니다.NDB의 PickleProperty 쿼리
두 클래스가 있습니다. 부모 인 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
나는 목적은 주어진 ID가 수신기 배열에 포함되어있는 경우 TweetIndex 개체를 반환하는 것입니다 API 방법 MyModelList와 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를 입력하려고 시도했지만 (놀라움도 없음) 중 하나가 작동하지 않았습니다.
이 배열을 올바르게 쿼리하려면 어떻게해야합니까?