需求:利用分页展示指定文件夹下的文件列表
环境:nodejs express
设计思想:把获取文件列表,分页分开增强复用性(也就这里用?)及数组映射 ,重新整理.
获取所有文件
/**
* @description: 获取文件夹下文件
* @param {String} path 文件夹目录
* @return: 文件列表
*/
function fileList(path) {
return fs.readdirSync(path)
}
未进行文件属性判断,可以使用fs.stat()方法判断.
数组分页
/**
* @description: 数组分页
* @param {Number} page
* @param {Number} pageSize
* @param {Object} array
* @return:
*/
function arrayByPage(page, pageSize, array) {
const startIndex = (page - 1) * pageSize;
return (startIndex + pageSize >= array.length) ? array.slice(startIndex, array.length) : array.slice(startIndex, startIndex + pageSize);
}
案例运用
/**
* @api {get} /api/upload/listByPage 分页获取列表
* @apiGroup upload
* @apiParam {Number} page
* @apiParam {Number} pageSize
* @apiSuccess {json} result
* @apiVersion 1.0.0
*/
router.get('/listByPage', (req, res) => {
let page = req.query.page || 1
let pageSize = req.query.pageSize || 5
// 总数
const totalRecord = fileList('./upload').length
// 映射 ,重新整理
const listForName = fileList('./upload').map((val, index, arr) => {
let json = {}
json.name = val
json.path = `/upload/${val}`
return json
})
const list = arrayByPage(page,pageSize,listForName)
res.json({
status: 200,
code: 0,
totalRecord:totalRecord,
pageSize: pageSize,
page: page,
data: list
})
});
调用下,perfect完美
{
"status": 200,
"code": 0,
"totalRecord": 1,
"pageSize": 5,
"page": 1,
"data": [
{
"name": "upload-1567215613252.jpg",
"path": "/upload/upload-1567215613252.jpg"
}
]
}
如哪位大佬发现不完美、有误及更好的方法.批评指正.