javascript - 发送 json 对象或使用快速路由渲染 View

标签 javascript json node.js pagination

我有两条路线:/news/news-paginate (我知道这是一个不好的 URL,但 atm 并不重要)。在 news 路由中,我从数据库加载 5 条记录并渲染一个填充 View 。在 /news-paginate 路由中,我根据客户端发送的页码和大小加载其他 5 条记录;该路由使用 JSON 对象进行响应。

新闻路线

router.get('/news', function (req, res) {

...

  connection.query(queries['news_list'], [language, +pageSize, +offset], function (err, rows) {
      res.render('news', {news: rows});
  });
});

新闻分页路线

router.get('/news-paginate', function (req, res) {
  var language = 'RU';
  var pageSize = req.query.pageSize;
  var pageNumber = req.query.pageNumber;
  var offset = (pageNumber - 1) * pageSize;

  connection.query(queries['news_list'], [language, +pageSize, +offset], function (err, rows) {
    res.json(rows);
  });
});

我关心我的架构。我的做法正确吗?我有两条具有相同功能和不同响应的路线。我应该以某种方式将这两条路线合并为一条吗?

最佳答案

嗯,我通常有一个路由,在你的例子中 /news 可以接收 2 个可选参数:pageSizepageNumber 为你的分页目的。如果这些参数不存在,您将提供前 5 条记录。如果这些参数存在,您将开始提供其他 5 条记录并基于计算的偏移

router.get('/news/:pageSize?/:pageNumber?', function (req, res) {
  var language = 'RU';
  var pageSize = req.params.pageSize || 5;
  var pageNumber = req.params.pageNumber || 1;
  var offset = (pageNumber - 1) * pageSize; // If no params are provided than the offset should be 0

  connection.query(queries['news_list'], [language, +pageSize, +offset], function (err, rows) {
    res.json(rows);
  });
});

我不熟悉快速路线中的可选参数,但我希望您了解该方法背后的主要思想。

在列出前 5 条记录后,您可以执行 ajax 请求来加载额外的记录。

我希望这能让人们了解这种方法。

关于javascript - 发送 json 对象或使用快速路由渲染 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29507794/

相关文章:

javascript - 我可以检测所有图像何时加载,以便将 isLoaded 变量更改为 true 吗?

Java : Convert Object consisting enum to Json Object

node.js - 如何在azure web应用程序中获取node.js运行时的部署槽

javascript - 映射网络驱动器 Node js

node.js - 如何在 Mongo 中查询?

javascript - 如何确保此文本输入值在没有 javascript 的情况下有效?

javascript - Jquery Slidetoggle 显示隐藏 一次一个 div

javascript - 在 react 组件内等待来自非 react 源的请求

java - 如何在 jquery 数据表中显示 json 数据

json - 如何从外部查看器调试器可视化工具获取对象或其数据的引用?