0

一度に 5 つのアイテム (ndb.Model) を表示するアプリに基本的なページングを実装しました。以下のコードを使用してクエリを実行します。

  fetched_resutls,next_cursor, more = Content.query(Content.user_email == user_email).order(-Content.sent_time).fetch_page(5, start_cursor=cursor)

ユーザーがアイテムを削除すると、以下のコードを使用してアイテムを削除し、最初の 5 つのアイテムを再クエリします。空のカーソルを渡して削除します。この再クエリ中、さらに項目がありますが、next_cursor は None です。誰でも理由を説明できますか?

        contentIntId = int(content_id)
        content = Content.get_by_id(contentIntId)
        content.key.delete()
        fetched_results, next_cursor = Content.find_by_email(user.email(), cursor)

前に削除せずに単純な再クエリを実行すると、次のカーソルが取得されます。

-----編集1-------

find_by_email のコード

  def find_by_email(cls, user_email, cursor):
      fetched_resutls,next_cursor, more = Content.query(Content.user_email == user_email).order(-Content.sent_time).fetch_page(5, start_cursor=cursor)
      li = []
      ep = None
      for p in fetched_resutls:
          ep = p.to_dict()
          ep['id'] = str(p.key.id())
          li.append(ep)

      next_bookmark = None
      if more:
        next_bookmark = next_cursor.to_websafe_string()
      return li, next_bookmark

イベントのシーケンス、

  1. まず、空のカーソルを使用して単純なクエリを実行します。カーソルを戻すと5つのアイテムが得られます。
  2. ユーザーがリストからアイテムを削除し、空のカーソルで最初の 5 つのアイテムを再クエリします。アイテムは取得できますが、カーソルは返されません。
4

0 に答える 0