Node.Js(三)

2018年11月25日

写了一个增删改查的小Demo,内容比较多,很多callback,先记录一下。

1.创建服务

使用express创建一个服务很简单,不多说。
var express=require("express");
var app=express();
......
app.listen(3000,function(){
    console.log("Sever running ......")
});

2.路由

对于一个完整的Web项目而言,是需要很多不同的路由的,如果将所有的内容都写在app.js中,程序维护性与可读性将变低,因此创建了一个单独的文件实现项目路由
var express = require("express");
var router = express.Router();

// 学生信息主页
router.get("/students", function(req, res) {});

// 添加学生页
router.get("/students/new", function(req, res) {});

//添加学生页提交按钮
router.post("/students/new", function(req, res) {});

//修改学生信息页
router.get("/students/updata", function(req, res) {});

//修改学生信息按钮路由
router.post("/students/updata", function(req, res) {});

//删除路由
router.get("/students/delete", function(req, res) {});

module.exports = router;

以上使用单独的一个文件实现了所有的路由并分模块的实现功能。最后以外部模块的方式加载到程序入口app.js

3.增删改查的实现

Web项目中会需要使用很多增删改查,因此单独的写了一个文件student.js用于实现这些功能,这里使用的数据持久化方式是写入到文件中,使用一个db.json文件啦存储信息

3.1添加学生信息

思路:读取文件并转化为对象,将新的学生对象插入,将对象转化为字符,写入文件。
module.exports.push = function(student, callback) {
  fs.readFile("./db.json", "utf8", function(err, data) {
    if (err) {
      return callback(err);
    }
    var students = JSON.parse(data).students;
    student.id = students[students.length - 1].id + 1;
    students.push(student);

    var fileData = JSON.stringify({
      students: students
    });
    fs.writeFile("./db.json", fileData, function(err) {
      if (err) {
        return callback(err);
      }
      callback(null);
    });
  });
};

3.2查询所有学生信息

思路:读取文件中的内容,转化为对象后返回
// 查找
module.exports.find = function(callback) {
  fs.readFile("./db.json", "utf8", function(err, data) {
    if (err) {
      return callback(err);
    }
    callback(null, JSON.parse(data).students);
  });
};

3.3.1根据学号查询学生信息

思路:遍历已存储的学生信息,找到对应学号的学生并返回。
//根据ID获取学生信息
module.exports.GetStudentById = function(studentId, callback) {
  fs.readFile("./db.json", "utf8", function(err, data) {
    if (err) {
      return callback(err);
    }
    var students = JSON.parse(data).students;
    var stu = students.find(function(item) {
      return item.id === parseInt(studentId);
    });
    callback(null, stu);
  });
};

3.3修改学生信息

思路:根据学号查询获取学生信息,copy新的学生信息后插入原数组对象,转换为字符串后写入文件。
// 修改
module.exports.update = function(student, callback) {
  fs.readFile("./db.json", "utf8", function(err, data) {
    if (err) {
      return callback(err);
    }
    var students = JSON.parse(data).students;
    student.id = parseInt(student.id);
    var stu = students.find(function(item) {
      return item.id === student.id;
    });
    for (var key in student) {
      stu[key] = student[key];
    }

    var fileData = JSON.stringify({
      students: students
    });
    fs.writeFile("./db.json", fileData, function(err) {
      if (err) {
        return callback(err);
      }
      callback(null);
    });

    callback(null, stu);
  });
};

3.4删除学生信息

根据ID查询到学生信息之后,从数组对象里删除(splice),然后转化为字符串写入文件。
//删除
module.exports.delete = function(id, callback) {
    fs.readFile("./db.json","utf8",function (err,data){
        if(err){
            return callback(err);
        }

        var students=JSON.parse(data).students;
        var stu=students.findIndex(function(item){
            return item.id===parseInt(id);
        });
        students.splice(stu,1);
        var fileData=JSON.stringify({
            students:students
        });
        fs.writeFile("./db.json",fileData,function(err){
            if(err){
                return callback(err)
            }
            callback(null);
        });
    });
};

4.以上方法中写了一万个callback,它们使函数在调用后可以通过参数函数里对返回的数据进行操作。

写删除的时候,输出数据到文件把路径里的文件名字写成app.js了,程序一运行当场去世……

running

放一张运行图,页面在bootstrap上随便扒来的

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Node.js Buffer(缓冲区) JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在...
    FTOLsXD阅读 3,602评论 0 2
  • Node.js 创建第一个应用 在我们创建 Node.js 第一个 "Hello, World!" 应用前,让我们...
    yyshang阅读 1,742评论 0 2
  • 详情 小程序风口的产生与移动互联网流量红利逐渐消逝关系密切。移动端用户的争夺,已从增量市场转向存量市场,从抢占用户...
    极乐叔阅读 1,634评论 0 1
  • 题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不...
    NoFacePeace阅读 1,576评论 0 0
  • by孤鸟差鱼 把情绪收起来 落了地下的 还有好多它的子孙
    孤鸟差鱼阅读 1,504评论 0 1

友情链接更多精彩内容