2016-12-09 2 views
0

는이 전 몽구스에서 다음과 같은 모델을 가정 해 봅시다 :몽구스 배열 매개 변수 필터

var Product = new Schema({ 
    eanCode: String, 
    brandName: String, 
    productNameNl: String, 
    sex: String, 
    suggestedRetailPrice: Number 
}) 

어떻게 매개 변수 배열을 사용하여이 모델을 조회 할 수있는 기능을 쓸 수있다? 필터 매개 변수 배열을 사용하여이 모델에서 아무 것도 얻을 수있는 제네릭 함수가 필요합니다. 예를 들어 :

var filterArray = [ 
    sex: "gents", 
    brand: "brandName" 
]; 
var fieldsArray = ["sex", "brand", "productNameNl", "eanCode"]; 
var getBrandGentsProducts = getProducts(filterArray); 

function getProducts(fields, filter){ 
    Product.Find({fields}, {filter}).exec(function(err, products){ 
     return products; 
    }) 
} 

답변

0

당신은 당신의 필터에 대한 키 값 쌍을 구축하기 위해 fieldArray을 줄일 수 있습니다

예 :

// create a filterMap for your fields and value that you want to filter with 
var filterMap = { 
    sex: "gents", 
    brand: "brandName" 
}; 
var fieldsArray = ["sex", "brand", "productNameNl", "eanCode"]; 
var getBrandGentsProducts = getProducts(filterArray); 

function mapFilter(fields, filter) { 
    return fieldsArray.reduce(function (obj, field) { 
    if (filterMap[field]) { 
     obj[field] = filterMap[field]; 
    } 
    return obj; 
    }, {}); 
} 
function getProducts(fields, filter){ 
    var filterPair = mapFilter(fields, filter); 
    //console.log(filterPair) //output { "brand": "brandName", "sex": "gents" } 
    Product.Find(filterPair).exec(function(err, products){ 
     return products; 
    }) 
}