Node.js简单学习

起源

本来想学阿里云小程序开发的,免费服务器申请好了后,界面让提交node.js包,于是在b站搜了下node.js,开启了大约为期2周的学习。
由于在专心考研,node的学习只是作为调节学习的娱乐活动,每天只学习0.5-1小时,所以学的很慢。。从前端0基础到做出一个生产管理系统,还是有点小成就感的。。

学习过程

跟着老师学的,老师分了5天,我跟着敲代码,1.5倍速跳播看完了。我的这5部分别为:

  1. node.js基础感知:helloworld、文件操作、httpserver
  2. 丰富httpserve,让它像Apach一样提供服务、使用art-template模板引擎
  3. 设计首页、设计提交表单、npm、静态资源、处理post和get请求、JSON、js异步编程
  4. 使用express框架写web服务、使用bodyParser解析post请求、模块化编程、使用db.json文件模拟数据库,实现对系统的增删改查
  5. 学习mongodb数据库、使用mongoose框架操作数据库

效果

首先在控制台输入mongod开启数据库服务,再输入node app.js开启web服务器,首页如下:
Node.js简单学习_第1张图片

  • 删除:点击删除可以删除一条数据
  • 编辑:点击编辑可以编辑某个学生的数据:
    Node.js简单学习_第2张图片
  • 增加:点击添加学生,可以增加一条记录:
    Node.js简单学习_第3张图片

数据库事务代码

// students.js
// 数据操作文件模块
// 职责:操作数据库中的数据,不关心业务
var fs = require('fs')

var mongoose = require('mongoose');

//1.连接你的数据库
mongoose.connect('mongodb://localhost:27017/student3', {useNewUrlParser: true});

//2.设计文档结构
var Schema = mongoose.Schema;

var studentSchema = new Schema({
    myid:{
        type: Number,
        required: true
    },
    name:{
        type: String,
        required: true
    },
    gender: {
        type: String,
        required: true
    },
    age:{
        type: Number,
        required: true
    },
    hobbies:{
        type: String,
        required: true
    }
});

// 3.将文档结构发布为模型,
// 第一个参数传入大写名词单数字符串表示数据库名称,系统改成users;第二个参数传入架构
var Student = mongoose.model('Student',studentSchema)

// 获取所有学生列表
// return []
exports.find = function(callback){//回调函数作为导出的参数
    Student.find(function(err,ret){
        if(err){
            return callback(err)
        }else{
            callback(null,ret)//第一个参数要么是error 要么是空
        }
    })
}
// 添加新学生信息 下面的异步回调才是node的奥义,这叫异步编程
exports.save = function(student,callback){//传一对象和回调函数
    Student.find(function(err,ret){
        if(err){
            return callback(err)
        }else{
            var admin = new Student({
                myid:ret[ret.length - 1].myid + 1,
                name:student.name,
                gender:student.gender,
                age:student.age,
                hobbies:student.hobbies
            })
            admin.save(function(err,ret){
                if(err){
                    callback(err,ret)//第一个参数要么是error 要么是空
                }else{
                    callback(null,ret)//第一个参数要么是error 要么是空
                }
            })
        }
    })
}
//根据id查找学生信息 返回的是某个学生全部信息
exports.findById = function(id,callback){
    Student.findOne({
        myid: id
    },{
        useFindAndModify:false
    }
    ,function(err,ret){
        if(err){
            return callback(err)
        }else{
            callback(null,ret)//第一个参数要么是error 要么是空
        }
    })
}
// 更新学生
exports.updateById = function(student,callback){
    Student.findOneAndUpdate({
        myid: parseInt(student.myid)
    },
    {
        name:student.name,
        gender:student.gender,
        age:student.age,
        hobbies:student.hobbies
    },{
        useFindAndModify:false
    },
    function(err,ret){
        if(err){
            return callback(err)
        }else{
            callback(null,ret)//第一个参数要么是error 要么是空
        }
    })
}
// 删除学生
exports.deleteById = function(id,callback){
    Student.findOneAndRemove({
        myid: id
    },
    {
        useFindAndModify:false
    },
    function(err,ret){
        if(err){
            return callback(err)
        }else{
            callback(null,ret)//第一个参数要么是error 要么是空
        }
    })
}

总结

由于时间关系,学node.js有点走马观花,做出了一个demo就没学了,仅仅是做了增删改查。但是学会了mongodb数据库的操作、路由设计、html表单、express、npm等一些东西,明白了很多函数不记得是可以去官网查api的,感觉js其实是很有意思的。回调函数也有一点理解,但是没看promise。下一步学习vue.js。

你可能感兴趣的:(web)