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



我正在使用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];
}

最新更新