0

クエリに関してはかなり役に立たないので、この問題の正しい構造は何でしょうか。

クライアントにはオブジェクトのキーを含むデータが送信され、クライアントはそのキーを使用して、ダウンロードした最新のオブジェクトをサーバーに通知します。

その時点からすべてのオブジェクトを取得したいのですが、オブジェクトには自動日付属性があります。

さらに、特定の「新しいユーザー」キーなどを使用して要求する可能性のある新しいユーザーに、15個(またはそれ以上)の最新のオブジェクトを提供できるようにしたいと思います。

Python2.7ランタイムを使用し、これまでGQLを使用したことはありません。

どんな助けでも大歓迎です。

モデルクラスは次のとおりです。

class Message(db.Model):
    user = db.StringProperty()
    content = db.TextProperty()
    colour = db.StringProperty()
    room = db.StringProperty()
    date = db.DateTimeProperty(auto_now_add=True)
4

1 に答える 1

1

db.Key オブジェクトまたは db (ndb ではなく) API を使用したキーの文字列表現の場合:

last_message = Message.get(lastkey)

キー名など、別の表現でキーを持っている場合:

last_message = Message.get_by_key_name(lastkey)

オブジェクトの数値 ID としてキーを持っている場合:

last_message = Message.get_by_id(int(lastkey))

次に、最後のメッセージ以降のメッセージを次のように取得できます。

messages_since_last_message = Message.all().filter('date >', last_message.date).order('date')
#OR GQL:
messages_since_last_message = Message.gql("WHERE date > :1 ORDER BY date ASC", last_message.date)

まったく同じ時間に到着する複数のメッセージが存在する可能性があるため、コンパレータを使用する必要>=があります。次に、探している最後のキーまでのリストにあるすべてのメッセージを除外します (これは実際には使用方法によって異なります)。ケースとメッセージをどれだけ正確に書き込むことができるか)。さらに、高レプリケーション データストアでは結果整合性があるため、祖先クエリを使用しない限り、クエリがデータストアを正確に反映することは保証されません。あなたのユースケースは問題ではないかもしれません。ここでのエンティティ グループは、親モデルとそのすべての子の祖先を反映しています。祖先のグループは、単一のエンティティ グループに存在します。

于 2013-03-14T03:01:27.273 に答える