nodeJS

node進行文件操做,得引入fs核心模塊 fs --- file-systemjavascript

使用require方法加載 fs 核心模塊html

var fs = require('fs');java

讀取文件內容 ,toString是把2進制文件轉爲咱們認識的, 也能夠在function前面加入'utf-8'node

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

  讀取目錄linux

 

let Arrpath = 'E:/lianxi/nodeJs練習/01/code';
    fs.readdir(Arrpath,function(error,files){   //readdir讀取文件內容
        if(error){
            return console.log('沒有目錄列表')
        }
        console.log(files)
    })

 

  

 

寫入文件和內容web

//第一個參數:文件路徑
//第二個參數:文件內容
//第三個回調函數:回調函數
//只接收一個參數形參隨便寫
fs.writeFile('../data/你好.md','你們好呀!我是寫入文件的內容',function(error){
    console.log('文件寫入成功')
})

  生成web服務器和查看請求頭和發生響應內容var http = require('http');mongodb

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引入包的規則requireexpress

  

  安裝並使用node框架npm

  

//安裝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文件運行

一、在express中獲取客戶端提交的get請求體數據經過req.query

 

app.get('/getData',function(req,res){  //當服務器收到get請求執行回調處理函數
    res.send(req.query)
})

二、在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('修改爲功')
//     }
// })
相關文章
相關標籤/搜索