0

내가 저장하고 작은 이미지의 경우 72x72이datastore ndb, 투영 내에서 ndb.ComputedProperty를 사용하는 쿼리는 안전합니까? 뭔가 같은 ndb.TextProperty()에서 base64로 인코딩 된

모델 구조입니다 :

class Article(ndb.Model): 
    title = ndb.StringProperty() 
    body = ndb.TextProperty() 
    tags = ndb.StringProperty(repeated=True, indexed=True) 
    thumbnail = ndb.TextProperty() 
    has_thumbnail = ndb.ComputedProperty(
     lambda self: True if self.thumbnail else False) 
    enable = ndb.BooleanProperty(default=True) 

프로젝션을 사용하여 쿼리에 대한 방법은 다음과 같습니다

@classmethod 
def get_articles(cls): 
    q = Aricle.query(
     True == Article.enable, 
     projection = [ 
      Article.title 
      Article.has_thumbnail 
     ]) 
    return q.get() 

ndb.TextProperty()은 색인이 생성되지 않으므로 예상에 표시 할 수 없으므로 ndb.ComputedProperty으로 시도해보고 작동 중임을 알립니다.

내 기본 질문은 이것이 쿼리를 수행하는 올바른 방법인지 아는 것입니다. 기본적으로 기사 및 썸네일의 제목을 반환하거나 기사에 썸네일이 있는지 확인하는 쿼리가 필요합니다.

답변

2

올바른지 계산 된 속성은 프로젝션 쿼리와 함께 작동합니다.

주의해야 할 점은 쿼리가 데이터 저장소에 유지되는 계산 된 속성 값을 사용한다는 것입니다. 따라서 계산 된 속성을 방금 추가 한 경우 이전에 추가 된 엔터티의 데이터 저장소에 나타나지 않습니다. 새 속성을 유지하기 위해 해당 엔티티를 다시 넣어야합니다.