2016-04-13 31 views
1

Bir sınıfta DataObjects listelemeye çalışıyorum. Birden çok alanda bir koşullu sorgusuna dayanarak DataObjects listesini filtrelemek istiyorum. sınıf Envanter: ileBirden çok alanda Syncano koşullu filtreleme

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

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

Seç Öğe Miktarı = 10 veya fiyat = 10. Bu nasıl elde edebilirsiniz field1 = xxx veya field2 eg için = xxx

dayalı bir DataObject seçmek için?

cevap

2

Bunu yapmanın en iyi yolu, sorgunuzu iki ayrı çağrıya bölmek ve birleştirmektir. Syncano, AND'yi sorguları birleştirmek için kullanır. Bu nedenle, OR için bunları iki ayrı API çağrısına ayırmanız gerekir. basit bir çözüm gibi görünüyor ama aynı zamanda, bir aramanın yerine 2 ile bunu mümkün kılmak için bakıyordu

// 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

, bu çözüm hem dizilerden eklenen yinelenen girdileri uzaklaştırmak için ilave bir mantık gerektirir. –

İlgili konular