2016-11-20 2 views
0

クライアントに無限のスクロールを許可します。 私は、クライアントがデータロードごとに制限(チャンク)を定義することを許可したくないという理由があります。なぜなら、コレクションには多くのドキュメントが含まれており、クライアントは無制限を要求することができるからです少数のjsを含む文書の数が注入されます。Meteorで制限を適用してサーバー側のページ付けを実装する方法

提案がありますか?

ありがとうございます!

+0

あなたはここで良いユースケースを提示していません。あなたは、クライアントに限度を指定させない理由としてセキュリティを挙げていますが、それはセキュリティホールではありません。 – Mikkel

+0

いつでもリクエストをレート制限することができます。 [DDP Rate Limiter](https://atmospherejs.com/meteor/ddp-rate-limiter)パッケージを見て、それを直接またはインスピレーションとして使用することができます。 – MasterAM

+0

@Mikkelハッカーが膨大なデータチャンクを要求できるのであれば、実際にはサーバーをシャットダウンすることができます。だから、セキュリティホールとしてそれを保ちましょう。 –

答えて

1

パブリケーションの手動制限を設定することができます(負荷あたり25ドキュメント)。

Meteor.publish('allDocuments', function(pageNavigator = 0) { 
     return CustomCollection.find({},{ skip:pageNavigator, limit:25  
     });  
    }); 

ここで、pageNavigatorはページングに使用されるセッション値です(例:0,25,50 ...)。 この方法では、ロードごとに最大25のドキュメントが常に返されます。

+0

その後、ユーザーがスクロールしてデータを取得する必要がある場合、サブスクリプションを停止して再開する必要がありますか? –

+0

メテオールはあなたのためにすべてを処理するのに十分なほどスマートです。このリンクを確認してくださいhttps://docs.meteor.com/api/pubsub.html#Subscription-connection – Dino

+0

スキップはすべてのドキュメントを検索しています。したがって、150kレコードがある場合、これはパフォーマンスが良くありません。 –

関連する問題