如果存在var,如何在查询中创build对象或放弃对象?

我正在与mongodb,与ajaxforms,它工作正常…我想放弃查询中的一些元素。 这是代码:

var preVariable= { precio_alquiler: {$lte:query.price_input_by_user}, tipo_usuario: query.type_of_user, }; db.collection('data').find(preVariable,{_id:0},{safe:true}, function(err, result) 

说明:

precio_alquiler是元素的价格

tipo_usuario是包含的表单中的一个select

 select(name='type_of_user') option(value="Commerce") Comercio option(value="User") Usuario option(value="Mayorist") Mayor 

所以问题是…如果用户想咨询一个元素的价格,并忽略用户的types,如何创build查询variables? 这是一个可以解释问题的例子

 var preVariable= { precio_alquiler: {$lte:query.price_input_by_user}, tipo_usuario: query.type_of_user || "dont create the object tipo_usuario", }; 

通常的做法是首先初始化具有已知属性的对象,然后有条件地添加那些依赖于input的对象:

 var preVariable = { precio_alquiler: { $lte: query.price_input_by_user } }; if(query.type_of_user) { preVariable.tipo_usuario = query.type_of_user; } 

你可以创build不同的对象:

 var preVariable = query.type_of_user ? { precio_alquiler: { $lte: query.price_input_by_user }, tipo_usuario: query.type_of_user } : { precio_alquiler: { $lte: query.price_input_by_user } }; 

如果你有很多这些领域,那么这可能比使用条件更好:

 var preVariable = { precio_alquiler: {$lte:query.price_input_by_user}, tipo_usuario: query.type_of_user, //... more }; // Remove the undefined fields for (var prop in preVariable) { if (preVariable[prop] === undefined) delete preVariable[prop]; }