【问题标题】:Implementing sorting for my Restful API为我的 Restful API 实现排序
【发布时间】:2018-04-19 10:56:45
【问题描述】:

我已经成功地为我的 API 实现了 GET 和 DELETE 方法(在 Postman 上的 GET localhost:4000/users/api,DELETE localhost:4000/users/api 工作正常)。

我现在要实现的是指定每个特定字段的排序顺序,其中 1 为升序,-1 为降序。例如,

如果我做 localhost:4000/api/users?sort = { fieldName : 1 }

这将返回按“fieldName”排序的用户列表。

到目前为止我所做的是:

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 指定升序和降序。

编辑:

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
              });
          }
      });
    }

});

【问题讨论】:

    标签: node.js rest api


    【解决方案1】:

    您必须将 1 和 -1 从字符串更改为数字。 你可以得到这样的查询“localhost:4000/api/users?sort[fieldName] = 1” 然后在代码中定义像

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

    然后将 obj 传递给 find 中的排序部分。

    【讨论】:

    • 我怎样才能让它专门用于像 ...?sort = { fieldName : 1 } 这样的查询
    • 测试它:obj[fieldName] = obj[fieldName] == '1' ? 1:-1
    • 你能看到我的编辑吗?它说 fieldName 没有定义
    • 好吧,如果我删除 let obj 它会告诉我 obj 没有定义
    • 将 obj[fieldName] 更改为 obj['fieldName']
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多