node js express routes /users?limit=20&offset=0

node js express routes /users?limit=20&offset=0

本文关键字:amp offset limit express js routes users node      更新时间:2023-09-26

我现在正在学校学习node js,但是我阻塞了一条我需要做的路线。

我有一个数据库与一些用户,与localhost/users我可以得到所有的用户,并打印在页面上。

但是我阻塞了一条路由:localhost/users?limit=20&offset=0,这条路由就像以前一样,但限制是页面上的20个用户,但是当我在导航器上写这个url时,他只是停留在/users路由上而不考虑我的参数(限制和偏移):/。

下面是我的代码:
app.get('/users', (req, res, next) => {
console.log('/users')
  db.all('SELECT * FROM users').then((users) =>  {
      res.send(users)
      next()
  })
})

app.get('/users/:userId', (req, res, next) => {
  console.log('aleluya')
  console.log('-> GET /users/:userId (userId : ' + req.params.userId +')')
  var id = req.params.userId;
  db.all('SELECT * from users WHERE rowid = '+ id +'' ).then((users) => {

  res.send(users)
  next()
})
})

app.get('/users?limit=20&offset=0', (req, res, next) => { // prendre l'url
  console.log('/users?limit=20&offset=0') // afficher dans la console
    limit = req.params.limit 
    offset = req.params.offset // mettre 0 dans offset
    console.log(limit, offset)
    db.all('SELECT * FROM users LIMIT '+ limit +' OFFSET '+ offset +'').then((users) =>  {
        res.send(users)
        next()
    })
  })

这是因为你的路径仍然是/users

要访问查询参数,必须使用:

// console.log(req.query['key'])
//
//     req.query.limit  
//     req.query.offset
所以,你可以这样修改你的代码:
app.get('/users', (req, res, next) => {
console.log('/users')
if( req.query.limit ){
    return doQueryUsers(req, res, next);
}
  db.all('SELECT * FROM users').then((users) =>  {
      res.send(users)
      next()
  })
})

app.get('/users/:userId', (req, res, next) => {
  console.log('aleluya')
  console.log('-> GET /users/:userId (userId : ' + req.params.userId +')')
  var id = req.params.userId;
  db.all('SELECT * from users WHERE rowid = '+ id +'' ).then((users) => {

  res.send(users)
  next()
})
})

var doQueryUsers = function(req, res, next) { // prendre l'url
  console.log('/users?limit=20&offset=0') // afficher dans la console
    limit = req.query.limit 
    offset = req.query.offset // mettre 0 dans offset
    console.log(limit, offset)
    db.all('SELECT * FROM users LIMIT '+ limit +' OFFSET '+ offset +'').then((users) =>  {
        res.send(users)
        next()
    })
  }