私は電子メールアドレスを収集する簡単なニュースレターアプリを構築しています。私はPythonアプリケーションにajax経由で電子メールの値を送信するフォームを持っていますが、私の人生のために、電子メールがすでに存在するかどうかを調べる方法を理解できません。以下のコードは現在機能していますが、 "既存のエンティティを確認する"ものを追加する場所や場所はわかりません。ndbデータストアの重複するプロパティを防止する
import webapp2
import json
from google.appengine.ext import ndb
class Email(ndb.Model):
email = ndb.StringProperty()
subscribed = ndb.BooleanProperty()
@staticmethod
def create(email):
ekey = ndb.Key("Email", email)
entity = Email.get_or_insert(ekey)
if entity.email: ###
# This email already exists
return None
entity.email = email
entity.subscribed = True
entity.put()
return entity
class Subscribe(webapp2.RequestHandler):
def post(self):
add = Email.create(self.request.get('email'))
success = add is not None
self.response.headers['Content-Type'] = 'application/json'
obj = {
'success': success
}
self.response.out.write(json.dumps(obj))
app = webapp2.WSGIApplication([
webapp2.Route(r'/newsletter/new', Subscribe),
], debug=True)
トランザクション内で祖先以外のクエリを作成できないため、#2オプションは機能しません。また、そのようなクエリは最終的に一貫しているので、重複は可能です。 –
それはクロス・グループ・トランザクションなので、それはうまくいけませんか? –
"トランザクションでは、祖先クエリのみが許可されます。" - どんな種類の取引でも問題ありません。 –