我正在使用mongodb,使用ajax形式,它工作正常...我想丢弃查询中的一些元素。这是代码:
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(name='type_of_user')
option(value="Commerce") Comercio
option(value="User") Usuario
option(value="Mayorist") Mayor
所以问题是...如果用户想查询元素的价格而忽略用户的类型,如何创建查询变量???这里有一个例子可以解释这个问题
var preVariable=
{
precio_alquiler: {$lte:query.price_input_by_user},
tipo_usuario: query.type_of_user || "dont create the object tipo_usuario",
};
一种常见的做法是首先使用已知属性初始化对象,然后有条件地添加依赖于输入的属性:
var preVariable = {
precio_alquiler: { $lte: query.price_input_by_user }
};
if(query.type_of_user) {
preVariable.tipo_usuario = query.type_of_user;
}
您可以创建不同的对象:
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];
}