Node.js 如何为RESTful API实现查询字符串参数

Node.js 如何为RESTful API实现查询字符串参数,node.js,rest,sorting,Node.js,Rest,Sorting,我是RESTful API的新手,我已经成功地为我的API实现了GET和DELETE命令(getlocalhost:4000/API,DELETE localhost:4000/API在Postman上运行良好) 我的get的代码如下所示: router.get('/', function(req, res) { user.find({}, function(err, users) { if(err){ res.status(404).send({

我是RESTful API的新手,我已经成功地为我的API实现了GET和DELETE命令(getlocalhost:4000/API,DELETE localhost:4000/API在Postman上运行良好)

我的get的代码如下所示:

router.get('/', function(req, res) {
    user.find({}, function(err, users) {
        if(err){
            res.status(404).send({
                message: err,
                data: []
            });
        } else {
            res.status(200).send({
                message: 'OK',
                data: users
            });
        }
    });
});
现在我想使用参数实现。例如,我想实现类似于排序的东西

{“名称”:1} (1-上升;-1-下降)

将意味着按升序对名称进行排序

我不知道该怎么做:

  • 我该怎么做?分类工作

  • 如何选择要排序的字段


  • 请帮忙

    我经常使用的一种很酷的解决方案是以下形式

    /api/users?sort=-name |+firstname

    我使用
    |
    进行多字段排序,使用
    -
    进行
    desc
    +
    进行
    asc

    简而言之:

    const { sort } = req.query; // sort = '-name|+firstname';
    const order = sort.split('|') // will return an array ['-name', '+firstname']
     .reduce((order, item) => {
       const direction = item.charAt(0) === '-' ? -1 : 1;
       const field = item.substr(1);
       order[field] = direction;
    
       return order;
    }, {})
    
    // order {'name': -1, 'firstname': 1}
    
     users.find({}).sort(order); // do your logic
    
    您只能传递order(asc,desc),如果您想按名称排序,您可以这样做 或

    然后在你的控制器里

    router.get('/', function(req, res) {
      let order = req.query.order;
      user
       .find({})
       .sort({"name": order}) 
       .exec(function(err, users) {
          if(err){
              res.status(404).send({
                  message: err,
                  data: []
              });
          } else {
              res.status(200).send({
                  message: 'OK',
                  data: users
              });
          }
      });
    
    }))


    如果您在mongodb中使用mongoose.js,这些都可以使用,非常感谢!这有帮助。您能告诉我如何返回包含“名称”字段的数据列表吗?e、 g.localhost:4000/api/users?select={“name”:1}(1代表include,0代表exclude)这是如何在数据库调用中排除字段。localhost:4000/api/users?exclude=-1像这样传递参数并从req.query.exclude中获取。然后把它穿过猫鼬