Not bad.
You can still pass the params of page in url and get the contents in route and controller:
var page = (req.param('page') > 0 ? req.param('page') : 1) - 1
var perPage = 30
var options = {
      perPage: perPage,
      page: page
}
Then you don't need add anything in TicketModel, mongoose provide already a callback function ".count()", and you can render.json the limited items.