2017-11-07 9 views
0

API(GET localhost:4000/users/api、PostmanのDELETE localhost:4000/users/api)でGETメソッドとDELETEメソッドを正常に実装しました。私の安心したAPIの並べ替えの実装

ここで実装したいのは、1が昇順、-1が降順である特定の各フィールドを並べ替える順序を指定することです。私はlocalhostを行う場合は例えば、

は:?4000/API /ユーザーをソート= {フィールド名:1}

は、これは 'フィールド名' でソートされたユーザーのリストを返します。これは、通常のソートのために働く

router.get('/', function(req, res) { 
    let obj = JSON.parse(req.query.sort) 

    user 
    .find({}) 
    .sort(obj) 
    .exec(function(err, users) { 
     if(err){ 
      res.status(404).send({ 
       message: err, 
       data: [] 
      }); 
     } else { 
      res.status(200).send({ 
       message: 'OK', 
       data: users 
      }); 
     } 
    }); 
}); 

が、私は昇順と-1で下降し、1

EDITを指定する方法を知りたい:私がこれまで行ってきた何

は以下のとおりです。

router.get('/', function(req, res) { 

    var count = req.query.count; 
    var sorting = req.query.sort; 
    //let obj = JSON.parse(sorting) 
    let obj = {} 
    obj[fieldname] = req.query.sort.fieldName == '1' ? 1:-1 

    if(sorting != null) { 
     user 
     .find({}) 
     .sort(obj) 
     .exec(function(err, users) { 
      if(err){ 
       res.status(404).send({ 
        message: err, 
        data: [] 
       }); 
      } else { 
       res.status(200).send({ 
        message: 'OK sorted', 
        data: users 
       }); 
      } 
     }); 
    } 

}); 

答えて

1

文字列から数字には1と-1を変更する必要があります。 あなたはこのようなクエリを取得することができます:

let obj = {} 
obj['fieldName'] = req.query.sort.fieldName == '1' ? 1:-1 

、その後のようなOBJ は、コードで定義検索でソート部のためのOBJを渡す "localhostの4000/APIは/ユーザがソート[フィールド名] = 1は?"。

+0

どうすれば具体的にクエリのように動作させることができますか?sort = {fieldName:1} – Dawn17

+0

これをテストします: 'obj [fieldName] = obj [fieldName] == '1'? 1:-1' –

+0

私のEDITが見えますか?それはfieldNameが定義されていないと言います – Dawn17

関連する問題