微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

express.js,MySQL 分页

如何解决express.js,MySQL 分页

我正在尝试在服务器上进行分页,但我收到来自 MysqL 的语法错误

抱歉,我是新手,所以我不太明白问题在哪里...

这是我的代码: (FullUrl 是 BASE_URL 和 url 的串联 - 此表中的列)

router.get('/',function (req,res) {
  let numRows;
  let numPerPage = parseInt(req.query.npp,10) || 40;
  let page = parseInt(req.query.page,10) || 0;
  let numPages;
  let skip = page * numPerPage;

  let limit = skip + ',' + numPerPage;
    queryAsync(`SELECT count(*,concat('${BASE_URL}/',url) as FullUrl) FROM urls as numRows`)
     .then(function(results) {
      numRows = results[0].numRows;
      numPages = Math.ceil(numRows / numPerPage);
      console.log('number of pages:',numPages + 'number of rows:',numRows);
    })
   .then(() => queryAsync(`SELECT *,url) as FullUrl FROM urls LIMIT ` + limit))
    .then(function(results) {
      const responsePayload = {
        name: 'marketing_campaign',data: results
      };
    if (page < numPages) {
      responsePayload.pagination = {
        current: page,perPage: numPerPage,prevIoUs: page > 0 ? page - 1 : null,next: page < numPages - 1 ? page + 1 : null,pages: numPages
      }
    }
    else responsePayload.pagination = {
      err: 'queried page ' + page + ' is >= to maximum page number ' + numPages
    }
    res.json(responsePayload);
  })
  .catch(function(err) {
    console.error(err);
    res.json({ err: err });
  });
});

MysqL 错误

{
    "err": {
        "cause": {
            "code": "ER_PARSE_ERROR","errno": 1064,"sqlMessage": "You have an error in your sql Syntax; check the manual that corresponds to your MysqL server version for the right Syntax to use near ',concat('http://localhost:3001/',url) as FullUrl) FROM urls as numRows' at line 1","sqlState": "42000","index": 0,"sql": "SELECT count(*,url) as FullUrl) FROM urls as numRows"
        },"isOperational": true,"code": "ER_PARSE_ERROR",url) as FullUrl) FROM urls as numRows"
    }
}

解决方法

你可以关闭括号。

但既然你只想要计数,为什么还要添加另一列?

queryAsync(`SELECT count(*) as numRows FROM urls as numRows`)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。