zoukankan      html  css  js  c++  java
  • nodeJS

    node进行文件操作,得引入fs核心模块 fs --- file-system

    使用require方法加载 fs 核心模块

    var fs = require('fs');

    读取文件内容 ,toString是把2进制文件转为我们认识的, 也可以在function前面加入'utf-8'

    fs.readFile('../data/data1.text',function(error,data){
        console.log(data.toString())
    })
    

      读取目录

    let Arrpath = 'E:/lianxi/nodeJs练习/01/code';
        fs.readdir(Arrpath,function(error,files){   //readdir读取文件内容
            if(error){
                return console.log('没有目录列表')
            }
            console.log(files)
        })
    

      

     

    写入文件和内容

    //第一个参数:文件路径
    //第二个参数:文件内容
    //第三个回调函数:回调函数
    //只接收一个参数形参随便写
    fs.writeFile('../data/你好.md','大家好呀!我是写入文件的内容',function(error){
        console.log('文件写入成功')
    })
    

      生成web服务器和查看请求头和发生响应内容var http = require('http');

    var server = http.createServer() //创建一个web服务器
    
    //两个参数
    //Request  请求对象 (获取客户端一些请求信息.列如请求路径)
    //Response  响应对象 (给客户端发送响应东西)
    server.on('request',function(request,response){  
        console.log('收到客户端请求了,请求路径是:' +  request)//当用户请求了会打印这个东西 , 响应头
        let arr = [
            {
                name:'黄广发',
                age:19
            }
        ]
      //text/plain  普通文本
      //text/html html文本
      response.setHeader('Content-Type','text/plain;charset=utf-8'); //在响应内容里面设置响应内容格式,不写的话中文操作系统默认是gbk ,所以会乱码
        response.end(JSON.stringify(arr))  //必须要,服务器响应内容结束可以发生过去了,不然客户端一直等待
    })
    
    //启动服务器 ,绑定端口号
    server.listen(3000,function(){
        console.log('服务器启动成功了,可以通过http://192.168.0.3:3000 来访问');  
    });
    

      

       使用get请求提交数据到node , 再把客户端数据返回过去

      

      node引入包的规则require

      

      安装并使用node框架

      

    //安装Node框架express指令 npm install express --save
    let express = require('express'); //引包
    let app = express(); //创建服务器应用程序
    
    //公开指定目录
    //可以通过/data/xxx来访问data下的所有资源
    app.use('/data/',express.static('./data/'));
    
    app.get('/getData',function(req,res){  //当服务器收到get请求执行回调处理函数
        console.log(req)
        res.send(req.query)
    })
    
    
    app.listen(3000,function(error,data){  //启动服务器
        console.log('node服务已经启动访问:http://192.168.0.5:3000/')
    })
    

     

    安装第三方命令行工具解决修改密码重启问题nodemon

    npm install --global nodemon
    

     然后通过nodemon app.js文件运行

    1、在express中获取客户端提交的get请求体数据通过req.query

    app.get('/getData',function(req,res){  //当服务器收到get请求执行回调处理函数
        res.send(req.query)
    })

    2、在express中获取表单POST请求体数据 , 这里需要引入第三方包:body-parser

    //安装
    npm install body-parser --save
    

     在项目里面引入这个第三方包插件和完成插件的配置

    let bodyParser = require('body-parser'); //引入解析POST请求体数据的中间件(插件)
    
    //配置 body-parser 中间件 (插件,专门用来解析POST请求体)
    app.use(bodyParser.urlencoded({extended:false}))
    app.use(bodyParser.json())
    
    app.post('/post',(req,res) =>{ //当服务器收到post请求执行回调处理函数
       //通过req.body来获取客户端通过post提交过来的数据信息 
        res.send(req.body)
    })
    

      

       请求接口和一些配置信息写一起太麻烦了 , 所以这里选择模块化,管理 , 一个入口加载多个文件的方式 使用express提供的路由方式

      在同项目文件夹下创建一个router文件夹在里面生成router.js

      

    let fs = require('fs');
    let express = require('express'); //express提供的方式
    //创建路由容器
    let router = express.Router();
    
    // 把路由挂载到router
    
    router.post('/login',(req,res) =>{
        res.send('收到你的请求了')
    })
    
    
    module.exports = router  //导出在启动页面上使用他
    

    router.js配置好了之后就在app入口文件里面去使用他

    // 分模块引入router (请求方法)
    let router = require('./router/router')
    //使用它
    app.use(router)
    

     这样就哦了

     node服务器跨域设置

    //跨域设置
    router.all('*' , (req,res,next) =>{
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Headers', 'X-Requested-With');
        res.header('Access-Control-Allow-Methods', 'PUT,POST.GET,DELETE,OPTIONS');
        res.header('X-Powered-By', '3.2.1');
        res.header('Content-Type', 'application/json;charset=utf-8');
        next();
    })
    

      

    mondodb数据库

    安装去官网 https://www.mongodb.com/download-center#community 下载

    启动数据库因为我这边不是默认位置 ,首先在bin同级目录下创建一个data文件夹在cd data 创建一个db文件夹

    启用命令

    mongod -dbpath xxxx  //你的路径  如果是安装的默认路径直接mongodb命令启动就好了

    数据库一定得启动后才能进行连接

    连接命令 mongo 回车 退出ctrl+c

    linux下启动mongodb命令:  ./mongod -dbpath=/usr/local/mongodb/data -logpath=/usr/local/mongodb/mongodb.log -logappend -port=27017 -fork

    linux下关闭:  ./mongod -shutdown -dbpath=/usr/local/mongodb/data

    安装mogoose

    官网 http://mongoosejs.com/
    官方指南 https://mongoosejs.com/docs/guide.html

    npm install mongoose --save

    demo演示

    const mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});
    
    //创建一个模型  设计数据库
    const Cat = mongoose.model('Cat', { name: String });
    
    //实例化一个Cat
    const kitty = new Cat({ name: 'Zildjian' });
    kitty.save().then(() => console.log('meow'));

    命令行查看插入的数据

    show dbs 查看当前数据库

     use test 切换db 查询所有集合  切换后就来到test这个集合目录   show collections 查找当前目录所有集合  使用指令db.cats.find() 查找存储的数据

    mogodb数据库的概念

    {  //一个数据库中有多个集合(表)
        qq:{  //qq数据库集合有多个文档(表记录)
            users:[
                {name:'张三',age:18},
                {name:'李四',age:18},
                {name:'张五',age:18}
                ...
            ], //用户表
            products:[] //商品表
        },
        taobao:{
    
        },
        baidu:{
    
        }
    }
    //文档集合很灵活,没有任何限制

    设计Scheme 发布 Model

    const mongoose = require('mongoose')
    
    //设计集合结构(表结构)
    var Schema = mongoose.Schema;
    
    //指定连接的数据库不需要存在 ,当你插入第一条数据之后就会自动被创建出来
    mongoose.connect('mongodb://localhost/itcast')
    
    //约束的目的是为了保证数据的完整性,不要有脏数据
    var userSchema = new Schema({
        username:{
            type:String,
            required:true //表示这个key必须有值而且是字符串类型
        },
        password:{
            type:String,
            required:true
        },
        email:{  //用户可传可不传
            type:String
        }
    })
    
    //将文档结构发布为模型
    //第一个参数:传入一个大写名词单数字符用来表示你的数据库名称 mongoose会自动将大写名词的字符串生成小写复数的集合名称
    //User最终变成user
    //第二个参数:模型构造函数
    var User = mongoose.model('User',userSchema)
    

     添加数据

    var admin = new User({
        username:"admin",
        password:"123456",
        email:"admin@qq.com"
    })
    
    admin.save( (err,ret) =>{
        if(err){
            console.log('保存失败')
        }else{
            console.log('保存成功')
        }
        console.log(ret)
    })
    

     查询数据 

    //查询数据
    User.find( (err,ret) =>{//查询所有
        if(err){
            console.log(err)
        }else{
            console.log(ret)
        }
    })
    
    User.find({  //按条件查询
        username:"战三"
    }, (err,ret) =>{
        if(err){
            console.log(err)
        }else{
            console.log(ret)
        }
    })
    

     删除数据

    // //删除数据
    // User.deleteMany({
    //     username:"战三"
    // }, (err,ret) =>{
    //     if(err){
    //         console.log('删除失败')
    //     }else{
    //         console.log('删除成功')
    //         console.log(ret)
    //     }
    // })
    

      更新数据

    // //更新数据
    // User.findByIdAndUpdate('5cee005b0f68680478e89d74',{
    //     password:123,  //要修改的内容
    //     email:'145455615@qq.com'
    // },(err,ret) =>{
    //     if(err){
    //         console.log('修改失败')
    //     }else{
    //         console.log('修改成功')
    //     }
    // })
    

      

     

  • 相关阅读:
    色彩空间RGB/CMYK/HSL/HSB/HSV/Lab/YUV基础理论及转换方法:RGB与YUV
    三色视者与四色视者身后的理论基础:色彩原理
    再谈设计原则—7种设计原则学习总结笔记
    sass安装:webpack sass编译失败,node-sass安装失败的终极解决方
    再谈Java数据结构—分析底层实现与应用注意事项
    再谈js对象数据结构底层实现原理-object array map set
    浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
    再谈编程范式—程序语言背后的思想
    再谈循环&迭代&回溯&递归&递推这些基本概念
    再谈MV*(MVVM MVP MVC)模式的设计原理—封装与解耦
  • 原文地址:https://www.cnblogs.com/gfweb/p/10883059.html
Copyright © 2011-2022 走看看