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