2016-06-27 10 views
1

node.js driverを使用して結果を実行してストリーミングする必要があるcqlがあります。しかし、ある条件が満たされていれば、ストリーミングを中止する必要があります。このようなcassandraの結果を '中止'します

何か:

   client.eachRow(cql, [], { 
        autoPage: true 
       }, function(n, row) { 
        if(applySomeFilterLogic(row) === 'some val') { 
         //abort streaming 
        } else { 
         rows.push(row); 
        } 
       }, function(err, result) { 
        logger.error("server responded with error : %s", err); 
       }); 

データは、フィルタリングロジックで前処理され、カサンドラに永続化することはできません。データが永続化されたときにわからない多数の基準に基づいて、実行時に計算する必要があります。

一般的に、node.jsドライバまたはcassandraでこれを正常に達成する方法はありますか?

答えて

1

あなたが代わりにmanual pagingを使用する必要があります。これは、純粋なCQLクエリに正常に動作しますhttp://datastax.github.io/nodejs-driver/features/paging/

+0

const options = { prepare : true }; client.eachRow(query, parameters, options, function (n, row) { // Invoked per each row in all the pages }, function (err, result) { // Called once the page has been fully retrieved. if (yourCondition && result.nextPage) { // Retrieve the following pages based on your condition: // the same row handler from above will be used result.nextPage(); } } ); 

をあなたは、ドライバのマニュアルの詳細情報を読むことができます。しかし、where節に 'solr_query'を持つCQLの場合、ページネーションは起こっていません。これはnode.jsドライバ/ DSE Cassandraの既知の制限ですか? – raks81

関連する問題