2011-09-04 5 views
1

데이터 저장소에 '계산'엔티티가 있는데, 그 엔티티 아래에 7 백만 개의 개체가 있습니다. 그것은 다음과 같은 속성 (파이썬 런타임)가 다음 '질문'속성의작업 관리를 위해 GAE 데이터 저장소 사용

class Calculation(db.Model): 
    question = db.StringProperty(required=True) 
    answer = db.StringProperty() 

가정하자 예는 '1 + 1'과 같은 것들, '2 + 2', '3 + 3'(정말 중요하지 않습니다) . 모든 계산 개체는 빈 응답 속성으로 시작됩니다.

사용자가 앱에 연결하면 ajax 호출이 이루어지고 내 앱은 빈 answer 속성으로 계산 개체를 가져 와서 [1] 사용자의 브라우저로 보냅니다. 그런 다음 사용자의 브라우저는 질문을 평가하여 다른 서버 처리기로 다시 보냅니다.

해당 계산 개체의 응답 속성 [2]은 어떻게 업데이트합니까?

[1]과 [2]에 대한 코드를 제공하면 좋을 것입니다. App Engine과 쿼리에 익숙하지 않은 것은 혼란 스럽습니다. 가능한 한 많은 서버 CPU를 절약하고 싶다면 무엇을위한 최상의 솔루션입니까?

감사합니다.

답변

1

나는 정말로 이해하는지 모르겠다. 그러나 당신은 단순히 엔티티 Calculation과 question의 키를 호출하는 첫 번째 아약스를 반환해야합니다. 사용자가 응답을하면 먼저 키를 사용하여 엔티티를 가져오고 속성 answer을 업데이트합니다.

1 단계, AJAX 호출 (예를 들어) JSON에 질문을 반환 :

# To fetch an empty answered question 
qry = Calculation.All().filter('answer =', None) 
ref = qry.get() 

# The Json response 
{ 'key': unicode(ref.key()), 
    'question': ref.question} 

2 단계, 당신은 키 엔티티를 업데이트

# key and answer are variable from an http GET or POST request. 
ref = db.get(key) 
ref.answer = answer 
ref.put() 
+0

덕분에, 나는이었다 정확하게 찾고. 그러나 나는 qry가 qry = Calculation.all()이어야한다고 생각합니다. filter ('answer =', 'None') – ejang

+0

@ejang 아니요, 그렇지 않아야합니다. - 문자열 값이 "None"인 답변과 일치합니다. '없음'이라는 대답이 아닙니다. –

+0

흠, 이상한. 데이터 저장소에 'None'문자열 인 것처럼 보일 수도 있지만 필수 = True 또는 빈 속성에 'None'을 넣는 원인이 될 수 있습니다. – ejang

관련 문제