node.js - MongoDB 多条件查询
ringa_lee
ringa_lee 2017-04-17 15:17:01
0
2
671

有这样一个需求:根据URL中的query参数,来判断应该包含哪些查询条件。

使用场景

var _q = req.query;

// 当URL为 http://api.abc.com/group/filter?s=2
group.find({status:_q['s']});

// 当URL为 http://api.abc.com/group/filter?t=1&s=2
group.find({type:_q['t'],status:_q['s']});

请问find()如何书写,才能满足查询条件?

我当前的做法

var _q = req.query, _qParams = [];
if(_q.hasOwnProperty("t")){
    _qParams.push({"type":_q["t"]});
}
if(_q.hasOwnProperty("s")){
    _qParams.push({"status":_q["s"]});
}
groups.find({$or:_qParams},{},{sort:{_id:-1},limit:50}).exec(function (err, data) {
    if(!data || data.length == 0){
        res.json({code: 404, msg: "Empty"});
    }else{
        res.json({code: 0, msg: "success", data: data, count: data.length});
    }
});

但是执行了这条语句

res.json({code: 404, msg: "Empty"});

请各位高手赐教!

ringa_lee
ringa_lee

ringa_lee

全員に返信(2)
巴扎黑

実行されたステートメントは、結果が見つからなかったことを示しています。エラーが報告されているかどうかを確認するためにエラーを出力し、データベースにレコードが存在するかどうかを確認します。

さらに、以下のコードのクエリ条件は上記のものとは異なります。以下のコードでは $or クエリが使用されていますが、上記のクエリは and query である必要があります

。 リーリー

groups.find({$or:_qParams},{},{sort:{_id:-1},limit:50});
すべてのフィールドの場合、クエリする別の場所、2 番目のフィールドがあります。が返され、{}

ではなく null を渡します
いいねを押す +0
大家讲道理

@江立 データが存在しない場合でも、すべてのレコードが返されるように修正しました。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート