封装提取异步操作的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---数据操作模块的主要内容,如果未能解决你的问题,请参考以下文章

Vert.x 异步访问数据库 MySQL

封装异步API

Web Api + HttpClient:异步模块或处理程序已完成,而异步操作仍处于挂起状态

node封装mysql模块

node.js File System(文件系统模块)

Promise--实践练习之fs模块 & node运行Js脚本 & Promise封装练习-fs模块 & util.promisify方法