2016-04-13 19 views
1

クラスのDataObjectをリストしようとしています。私は複数のフィールドの条件付きクエリに基づいてDataObjectsのリストをフィルタリングしたい。 クラスのインベントリに:と複数フィールドのSyncano条件付きフィルタリング

+----------------------------------+ 
| Item | Quantity | Price  | 
+----------------------------------+ 
| X  | 10  | 30  | 
|         | 
| Y  | 20  | 10  | 
+----------------------------------+ 

var filter = { 
     'Quantity': { '_eq': 10 } OR 
     'Price': { '_eq': 10 } 
    }; 

選択項目は、数量= 10または価格= 10どのようにこれを達成することができます はフィールド1 = XXXまたはフィールド2などのために= xxxは

に基づいてのDataObjectを選択するには?

答えて

2

これを実行する最良の方法は、クエリを2つの別々の呼び出しに分割し、それらを結合することです。 SyncanoはANDを使用して問合せを結合するため、ORでは2つの別々のAPI呼び出しに分割する必要があります。簡単な解決策のように思えるが、私はまた、1つのコールの代わりに、2でこれを可能にするために探していた

// v1 Syncano JS SDK 
var Syncano = require("syncano"); // CommonJS 
var connection = Syncano({accountKey: "ACCOUNT_KEY"}); // or API Key 
var DataObject = connection.DataObject; 

var list = {instanceName: "INSTANCE_NAME", className: "CLASS_NAME"}; 
var filter1 = { 
    'Quantity': { '_eq': 10 } 
}; 
var filter2 = { 
    'Price': { '_eq': 10 } 
}; 

var QtyArray = []; 
var PriceArray = []; 

DataObject.please().list(list).filter(filter1).then(function(res){ 
    // res is an array of filter 'Quantity' 
    QtyArray = res; 
}); 

DataObject.please().list(list).filter(filter2).then(function(res){ 
    // res is an array of filter 'Price' 
    PriceArray = res; 
}); 

var comboArray = QtyArray.concat(PriceArray); 
+0

は、このソリューションは、両方の配列から追加された重複したエントリを削除する追加のロジックが必要になります。 –

関連する問題