ホームページ >バックエンド開発 >PHPチュートリアル >逆時間順序のページング クエリでは、ページのめくり中に新しいデータがデータベースに挿入され、重複したデータが返されます。これに対する良い解決策はありますか?皆さん、ありがとうございました
これは、ページめくりのプロセス中に、誰かがデータの一部を挿入し、最初のページの最後のデータが再び 2 番目のページに割り当てられ、最初の出力部分になりました。 2 ページ目、このデータは 2 回表示されますか?
それが意味する場合は、クエリ時に、クエリ ボタンをクリックした時点よりも短いデータを追加して、クライアントでページングを実行することをお勧めします。この方法では、新しいデータはまったく取得されないため、ページングに影響します。時間フラッシュバックなので、新たなデータがあっても見られず、データ抜けもありません。データが再度ロードされてフェッチされると、新しいデータがクエリされます。
少し前にモバイル側で同様の問題を扱ったばかりです。モバイル側のアイデアについて話しましょう:
まず、プルダウン (最新データの取得) とスライドアップ (最新データの取得) に分けられます。
2. 次に、毎回上にスワイプして前のデータを取得し、この ID を条件として使用します。時間の順序が逆の場合、基本的に、渡された ID は、最初のデータを除いて、データを取得するたびに逆の順序であると想定できます。将来的にはこのIDより小さいデータになります
3、まず初めてデータを取得するときはIDがないので最初のデータを順番に取得するだけです。
これがあなたの質問の解決に役立つことを願っています!
ごめんなさいは世界で最高の言語です。
私の答えはnodejsに基づいています。
しかし、それは問題ではありません、ただその考えを理解してください。
------元の回答-----
coding.netのAPIを見てみると、さらに2つのメソッドがあることがわかりました。
構文は mongoose に基づいています
1 つはページングと pagify によるものです。たとえば、20 ページある場合は、Model.find(query).skip(page*20 - 20).limit(20) となります。
2 つ目は、後で、特にその後にさらにロードすることです。私はこのようなものを開発したことがないので、その後 mongodb にそのような属性があるかどうかはわかりません。ただし、並べ替えで物事に依存することは比較的簡単です、Model.find(query).sort('-time').where({time:{$gt:TIME}}).limit(20)
mongodbにafterのようなものがあればもっと良いでしょう。 (時間はクラッシュする可能性がありますが、ID はクラッシュしないことに注意してください)
Model.find(query).sort('-time').after({id:ID}).limit(20)
https://coding.net/api/activities/projects_last?last_id=14959187を取得