2017-01-11 24 views
0

ページングについてはldapjs documentationに記載されていますが、私のアプリケーションでは、ajaxクライアントを使用してページングを実装する方法は不明です。私は、サーバーが結果を送り返すことを期待するljapjsページングとajaxクライアント

$.ajax({ 
    method: "GET", 
    url: "LDAPSearch", 
    data: { 
    filter: "(ou=People)", 
    pageNum: 1, 
    entriesPerPage: 10 
    } 
}).done(function(result) { 
    console.log('result: ', result); 
}); 

:最初はこのような10件のエントリ、との最初のページのために、のは、私は、組織内のすべての人々のためにLDAPを検索するために、サーバーへの単純な呼び出しを行うとしましょう最初の10個のエントリと検索の結果得られたエントリの総数が含まれているので、そこにいくつのページがあるのか​​分かります。あなたが必要な情報hereを見つける

var opts = { 
    filter: '(objectclass=commonobject)', 
    scope: 'sub', 
    paged: true, 
    pageNum: 1, //This is not a valid option, but how I would expect it to work 
    sizeLimit: 10 
}; 
client.search('o=largedir', opts, function(err, res) { 
    assert.ifError(err); 
    res.on('searchEntry', function(entry) { 
    // do per-entry processing 
    }); 
    res.on('page', function(result) { 
    console.log('page end'); 
    }); 
    res.on('error', function(resErr) { 
    assert.ifError(resErr); 
    }); 
    res.on('end', function(result) { 
    console.log('done '); 
    }); 
}); 

答えて

0

:サーバー上のldapjsコードでは、私のような、PAGENUMためOPTSでパラメータを期待します。

...結果のオブジェクトのすべてをsearchEntryイベント経由で出力します。動作中の各結果の終わりには、ページのイベントも同様に放出されます...

したがって、たとえば、コレクションに結果を追加するsearchEntryイベントを使用します。

res.on('searchEntry', function(entry) { 
    resultArray.push(entry.object); 
}); 

...(ページの)sizeLimitに達した場合は、ページイベントを使用して次のページに進みます。

res.on('page', function(res, cb) { 
    if (cb) { 
    cb.call(); 
    } else { 
    // search is finished, results in resultArray 
    } 
}); 

LDAPサーバーでは、既定または構成によって検索が制限されることがあります。 500は一般的なデフォルト値です。 http://www.openldap.org/doc/admin24/limits.htmlも参照してください。

関連する問題