ホームページ  >  記事  >  バックエンド開発  >  逆時間順序のページング クエリでは、ページのめくり中に新しいデータがデータベースに挿入され、重複したデータが返されます。これに対する良い解決策はありますか?皆さん、ありがとうございました

逆時間順序のページング クエリでは、ページのめくり中に新しいデータがデータベースに挿入され、重複したデータが返されます。これに対する良い解決策はありますか?皆さん、ありがとうございました

WBOY
WBOYオリジナル
2016-08-04 09:22:141972ブラウズ

時間の逆順でページングクエリを実行すると、ページめくり中に新しいデータがデータベースに挿入され、データが重複します。これに対する良い解決策はありますか?皆さんありがとう

返信内容:

時間の逆順でページングクエリを実行すると、ページめくり中に新しいデータがデータベースに挿入され、データが重複します。これに対する良い解決策はありますか?皆さんありがとう

これは、ページめくりのプロセス中に、誰かがデータの一部を挿入し、最初のページの最後のデータが再び 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)

coding.netにリクエストAPIを追加

https://coding.net/api/activities/projects_last?last_id=14959187を取得

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。