web-dev-qa-db-ja.com

Sails.Js-sails.Jsでページネーションを行う方法

Sails.js、mongodb、waterline-ORMを使用してページ分割されたテーブルを作成したいと思います。

Sails.jsでページ分割を行う特定の方法はありますか?

20
sasitha999

http://sailsjs.org/#/documentation/concepts/ORM/Querylanguage.html

_Model.find().paginate({page: 2, limit: 10});

Model.find({ where: { name: 'foo' }, limit: 10, skip: 10 });
_

ページネーションを非同期で機能させたい場合は、JQUERY _$$.getJSON_およびサーバーでres.json();を使用すると非常に簡単です。

ウォーターラインと帆のドキュメントに多くの情報があります。

31
Martin Malinda

別の方法もあります。

フロントエンドからデータをフェッチする必要があり、ブループリントをオンにしている場合は、次の方法も試してください。 http://yourDomain.com/ModelName?skip=10&limit=1

リファレンス:1.officerサイト: http://sailsjs.org/#/documentation/reference/blueprint-api/Find.html

8
fandyst

ブループリントルートの組み込みskiplimitクエリパラメーターを使用して、機能的なページネーターを構築できます。

/api/todos?skip=10&limit=10

このオプションを使用すると、さまざまなデバイスサイズに応じてページサイズを動的にサイズ設定できます。このオプションでは、基本的にページサイズであるlimitを指定します。 (ページサイズ-1)に現在のページ番号を乗算します-skipパラメーターを取得しました。

すべてのアイテムの数を取得する方法については、組み込みの方法を見つけられなかったため、ヘルパーミドルウェア( https://github.com/xtrinch/sails)を少し作成しました-pagination-middleware )レスポンスJSONの合計数を次のように返します。

{
    "results": [
        {
            /* result here */
        },
        {
            /* another result here */
        }
    ],
    "totalCount": 80
}

Npm経由でミドルウェアをインストールし、http.jsのミドルウェアに追加するだけです。

完全に機能する例が必要な場合は、githubでこの種のページ分割を使用したto-doアプリの例も用意しています: https://github.com/xtrinch/vue-sails-todo 。これはvueで書かれていますが、どちらの場合でもアイデアがわかるはずです。

この回答には帆1.xが必要であることに注意してください。

2
xtrinch

私はあなたもそれをioで行うことができると思います:

io.socket.get('/thing', {limit: 30, skip: 30*pageNum}, function(things, jwr) { /*...*/ })
0
Noitidart