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('修改成功')
//     }
// })

  

 

posted on 2019-05-17 18:39  菜鸡H  阅读(249)  评论(0编辑  收藏  举报