LoginSignup
0
0

More than 5 years have passed since last update.

AzureCosmosDBのUDFを使ってページネーションとソートをする

Posted at

やりたいこと

AzureCosmosDBでUDFを使ってjson arrayのPagenationとSortの記事でAzure Functions、CosmosDBを使ってsearchAPIの作り方が紹介されています。
こちらの記事を参考にページネーションを?page=4&limit=50のようにしたいと思います。
本記事ではUDF(ユーザ定義関数)以外は省略しますので詳細を理解するには最初に上記記事を読んでください。

UDFの修正点

  • 引数start, endをpageとlimitに変更。
    page はページ番号(デフォルト1)、limitは1ページに表示する件数(デフォルト100)です。
    もしpageやlimitが整数以外、最小値より小さい値だった場合はデフォルト値に置き換えることにします。

  • 引数orderの値はDESCからTime(昇順)、-Time(降順)に変更。

完成したUDF

function sort(contents, page, limit, order) {  
    /*
        ページング
    */
    page = Number(page);
    limit = Number(limit);
    var MIN_PAGE_NUM = 1;
    var MIN_LIMIT_NUM = 1;

    if (!isValidData(page, MIN_PAGE_NUM)) {
        page = 1;
    }
    if (!isValidData(limit, MIN_LIMIT_NUM)) {
        limit = 100;
    }

    start = limit * (page - 1);
    end = page * limit;

    function isValidData(data, min) {
        if (isInteger(data)) {
            if (data < min) {
                return false;
            } else {
                return true;
            }
        } else {
            return false;
        }
    }

    function isInteger(x) {
        return Math.round(x) === x;
    }

    /*
    ソート
    */
    function compareTime(a, b) {
        if (order == '-Time') {
        return b.Time - a.Time;
        }
        else{
        return a.Time - b.Time;
        }
    }
    return contents.sort(compareTime).slice(start, end);
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0