2016-04-12 22 views
4

Theres, belirli verileri almak için bazı filtreler belirtebileceğim bir uygulamamın parçası. Ancak tüm filtreler gerekli değildir, bu yüzden bazılarını boş bırakabilirim ve sorgu sadece onları kullanmaz. Bunu mongoDB'de nasıl yapabilirim. Şimdiden teşekkürler.mongoDB dosyasında birden çok filtre var

istemci tarafı:

 $('#filter').click(function(e){ 
     e.preventDefault(); 
     var filters = JSON.stringify({ Marca : $('#Marca').val(), Modelo : $('#Modelo').val(), Fecha : $('#Fecha').val()}); 

      $.ajax({ 
      type: 'POST', 
      data: filters, 
      url: '/filterFees', 
      contentType: 'application/json' 
      }).done(function(response) { 
       if(response.msg === ''){ 
        filterFees(response.data); 
       } 
       else { 
        alert('Error: ' + response.msg); 
       } 
      }) 
     }) 

node.js (kullanarak keşiş):

app.post('/filterFees', function(req, res){ 
    var db = req.db; 
    var collection = db.get('Fees'); 

    collection.find({'Marca' : req.body.Marca, 'Modelo' : req.body.Modelo, 'Fecha' : req.body.Fecha, },{},function(err,docs){ 
     res.send((err === null) ? { msg: '', data : docs } : { msg:'error: ' + err }); 
    }); 
}) 

cevap

4

ara değer yoktur filtreler

var filter = {}, filters; 
if $('#Marca').val() 
    filter.Marca = $('#Marca').val(); 

if $('#Modelo').val() 
    filter.Modelo = $('#Modelo').val(); 

if $('#Fecha').val() 
    filter.Fecha = $('#Fecha').val() 

filters = JSON.stringify(filter); 

bulunmaktadır ve veri burada bulmak filtreler

collection.find(req.body,{},function(err,docs){ 
    res.send((err === null) ? { msg: '', data : docs } : { msg:'error: ' + err }); 
}); 

PS.

+0

nesnesini göndermek yerine neden parametrelerini dizgileştirdiğinizden emin değilsiniz Çok teşekkürler, işe yaradı !. 'ContentType' nedeniyle 'JSON.stringify() işlevini kullanıyorum. Aksi halde 400 (Hatalı İstek) hatası alıyorum. – DCruz22

İlgili konular