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 に答える