Theres是我的应用程序的一部分,我可以指定一些过滤器来检索某些数据。但并非所有的过滤器都是必需的,所以我可以将其中一些过滤掉,查询就不会使用它们。我怎样才能在mongoDB中实现这一目标。提前谢谢。
客户端:
$('#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(使用和尚):
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 });
});
})
答案 0 :(得分:4)
检查过滤器中是否存在值
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);
并查找过滤器
的数据collection.find(req.body,{},function(err,docs){
res.send((err === null) ? { msg: '', data : docs } : { msg:'error: ' + err });
});
PS。不确定为什么要对参数进行字符串化 而不是发送对象