封装提取异步操作的API---数据操作模块
Posted 勇敢*牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装提取异步操作的API---数据操作模块相关的知识,希望对你有一定的参考价值。
封装提取异步操作的API
模块中导出函数(读文件异步操作)
//在模块文件中
exports.find = function (callback)
fs.readFile(path.join(__dirname, dbPath), 'utf8', function (err, data)
if (err)
return callback(err)
callback(null, JSON.parse(data).student)
// 字符串转对象
// JSON.parse(data).students;
)
保留数据一部分
exports.save = function (Nstudent, callback)
fs.readFile(path.join(__dirname, dbPath), 'utf8', function (err, data)
if (err)
return callback(err)
var students = JSON.parse(data).student;
// 处理id唯一性,不重复
Nstudent.id = students[students.length - 1].id + 1;
// 添加新的信息,把用户传递的对象保存到数组中
students.push(Nstudent);
// 将得到的全部对象转成字符串,把对象数据转化为字符串
var fileData = JSON.stringify(
student: students
)
// 把字符串保存到文件中
fs.writeFile(path.join(__dirname, dbPath), fileData, function (err)
if (err)
return callback(err)
callback(null);
);
)
加载首页核心代码
//加载那个模块
var Student = require('./student')
router.get('/students', function (req, res)
//利用回调函数获取值
Student.find(function (err, students)
if (err)
return res.status(500).send('Server error.');
res.render('index.html',
students: students
);
)
)
加载保存
核心代码
1.获取表单数据
2.处理(将数据保存在db.json实现持久化)
3.发送响应
console.log(req.body);
先读取出来,转成对象
然后往对象中push数据,然后把对象转为字符串
然后再把字符串再次写入文件
router.post('/students/new', function (req, res)
/*
1.获取表单数据
2.处理(将数据保存在db.json实现持久化)
3.发送响应
*/
// console.log(req.body);
// 先读取出来,转成对象
// 然后往对象中push数据,然后把对象转为字符串
// 然后再把字符串再次写入文件
var student = req.body;
Student.save(student, function (err)
if (err)
return res.status(500).send('Server error.');
res.redirect('/students');
)
)
以上是关于封装提取异步操作的API---数据操作模块的主要内容,如果未能解决你的问题,请参考以下文章
Web Api + HttpClient:异步模块或处理程序已完成,而异步操作仍处于挂起状态
Promise--实践练习之fs模块 & node运行Js脚本 & Promise封装练习-fs模块 & util.promisify方法