1

我正在使用 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",
    };
4

3 回答 3

1

您可以创建不同的对象:

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
    }
};
于 2012-12-18T23:04:52.683 回答
1

一种常见的做法是首先用已知属性初始化对象,然后有条件地添加那些依赖于输入的对象:

var preVariable = {
    precio_alquiler: { $lte: query.price_input_by_user }
};

if(query.type_of_user) {
    preVariable.tipo_usuario = query.type_of_user;
}
于 2012-12-19T00:13:55.007 回答
0

如果您有很多这些字段,那么这可能比使用条件更好:

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];
}
于 2012-12-19T02:50:49.573 回答