node

427 阅读4分钟

文件的读取、写入、追加

//读取
var fs=require('fs')
fs.readFile('./a.txt','utf8',(err,data)=>{//读取文件的内容,接收3个参数,文件路径,解析字符串,回调函数(接收2个参数,一个失败,一个成功)
    console.log(err)
    console.log(data)
})


//写入
var fs=require('fs')
fs.writeFile('./a.txt','写入',(err)=>{//写入内容,接收3个参数,文件路径,解析字符串,回调(一个参数,失败回调),会清空之前存在的内容
    console.log(err)
})


//追加
var fs=require('fs')
fs.readFile('./a.txt','utf8',(err,data)=>{
    if(!err){
    fs.writeFile('./a.txt',data,(err)=>{
        if(!err){
            console.log('追加成功')
        }
    }
  )
})

导出配置

//创建package.json
{
    "type": "module"
}
//或者把.js改为.mjs

http模块简单实例

var http=require('http')
var server=http.createServer()//创建服务器,实是获取服务器的实例对象
server.listen(8080,()=>{//监听端口,接收2个参数,一个端口号,一个回调函数,成功回调
    console.log('http://127.0.0.1:8080')
})
server.on('request',(req,res)=>{//监听客户端,接收2个参数,一个请求信息,一个响应信息
    console.log('66')
    res.write('8888')//响应写入信息
    res.end()//响应断开
})
//插件,npm install -g nodemon修改代码自动更新

根据不同的信息响应不同的内容

var http = require('http')
var fs = require('fs')
var url=require('url')//解析路由的参数
var server = http.createServer()/
server.listen(8080, () => {
    console.log('http://127.0.0.1:8080')
})
server.on('request', (req, res) => {
    console.log(req.method)//判断请求方法
    if (req.method == 'GET') {
        console.log(url.parse(req.url,true))//解析参数,第一个参数是路由,第二个参数是否解析参数
        if (req.url == '/') {//判断请求的信息,响应不同信息
            fs.readFile('./index.html', 'utf-8', (err, data) => {//先读取后响应
                res.write(data)
                res.end()
            })
        } else {
            fs.readFile('./jhs.png', (err, data) => {
                res.end(data)
            })
        }
    }
})

1673252009100.png

常见的数据请求

方法说明
GET获取服务器资源
POST向服务器提交数据
PUT向服务器写入资源,如果已存在则进行替换
DELETE删除资源
HEAD获取服务器响应首部
OPTIONS询问服务器所支持的请求方法

HTTP响应状态码

状态码含义
1xx信息性
2xx成功
3xx重定向
4xx客户端错误
5xx服务的错误

(安装express:npm i express)

express框架简单读取用户信息

const express = require('express')
const fs = require('fs')
const { promisify } = require('util')//使用该方法把回调函数转换成async await
const readFile = promisify(fs.readFile)//读取内容
const app = express()
app.get('/', async (req, res) => {
    try {
        let back = await readFile('./dg.json', 'utf8')
        res.send(JSON.parse(back))
    } catch (err) {
        res.status(500).json({ err })//返回的状态码(status),json注释
    }
})
app.listen(3000, () => {//监听3000端口
    console.log('http://127.0.0.1:3000')
})

express框架简单添加用户

const express = require('express')
const fs = require('fs')
const { promisify } = require('util')//使用该方法把回调函数转换成async await
const readFile = promisify(fs.readFile)
const writeFile = promisify(fs.writeFile)
const app = express()
app.use(express.json())//接收json格式的信息
// app.use(express.urlencoded())//请求头为application /x-www-form-urlencoded的数据
app.post('/', async (req, res) => {
    // req.headers//请求头信息
    // req.body//请求的内容
    // console.log(req.headers)
    console.log(req.body)
    let body = req.body
    if (!body) {
        res.status(403).json({ error: '缺少用户信息' })
    }
    let back = await readFile('./dg.json', 'utf8')
    body.id =JSON.parse(back).users[JSON.parse(back).users.length-1].id + 1
    let data = JSON.parse(back).users
    data.push(body)
    try {
        let w =await writeFile('./dg.json',JSON.stringify(data))
        if (!w) {
            res.status(200).json({ error: '写入成功' })
        }
    } catch (err) {
        res.status(403).json({ error: '写入失败' })
    }
})
app.listen(3000, () => {
    console.log('http://127.0.0.1:3000')
})

express框架简单修改用户信息

const express = require('express')
const fs = require('fs')
const { promisify } = require('util')//使用该方法把回调函数转换成async await
const readFile = promisify(fs.readFile)
const writeFile = promisify(fs.writeFile)
const app = express()
app.use(express.json())//接收json格式的信息
// app.use(express.urlencoded())//请求头为application /x-www-form-urlencoded的数据
app.put('/:id',async (req,res)=>{
    //console.log(req.params.id)获取参数
    try{
        let userInfo=await readFile('./dg.json','utf8')
        let data=JSON.parse(userInfo)
        let userid=Number.parseInt(req.params.id)
        let user=data.find(item=>item.id==userid)
        if(!user){
            res.status(403).json({error:'用户不存在'})
        }
        const body=req.body
        console.log(body)
        user.name=body.name?body.name:user.name
        user.age=body.age?body.age:user.age
        data[userid-1]=user
        let r=await writeFile('./dg.json',JSON.stringify(data))
        if(!r){
            res.status(200).json({ error: '修改成功' })
        }else {
            res.status(400).json({error:'失败'+r})
        }
    }catch(err){
        res.status(501).json({q:err})
    }
})
app.listen(3000, () => {
    console.log('http://127.0.0.1:3000')
})

MongoDB连接node

//安装插件 npm i mongodb
const {MongoClient}=require('mongodb')
const client=new MongoClient('mongodb://127.0.0.1:27017')//服务器的地址
const main=async()=>{
    await client.connect()//连接服务器
    const db=client.db('mytest')//连接库
    const cc=db.collection('cc')//连接集合
    let d=await cc.find()//读取cc中全部数据
    console.log(await d.toArray())
}
main().finally(()=>client.close())//关闭
//运行 node xxx(文件名)

中间件

1.
const express = require('express')
const app = express()
app.use((req,res,next)=>{//在get等等请求类型前面执行
    console.log(`${req.method},${req.url},${Date.now()}`)
    next()//执行后在执行get等请求
})

2.
const express=require('express')
const app=express()
app.get('/user',(req,res,next)=>{
    console.log(req.method)
    next()//调用完后执行下一个
},(req,res,next)=>{
    console.log('666')
    res.send()
})

3.路由中间件
const express=requirs('express')
const router=express.Router()
router.get('/',(req,res)=>{
    console.log(req.method)//判断请求方法
    res.send('/index')
})
router.get('/users',(req,res)=>{
    console.log(req.method)
    res.send('/users')
})
module.exports=router//导出

const app=express()
const router=require('./')//导入,文件名
app.use(router)//使用
app.use('/add',router)//在原有的路由后面加前加/add
app.use((req,res,next)=>{//没有监听到的路由
    res.status(400).send('404 Not Found')
})
app.use((err,req,res,next)=>{//服务端的代码报错
    console.log(err)
    res.status(500).send('service Error')
})

mongoose的基本使用

const mongoose=require('mongoose')
const mian=async()=>{//连接本地数据库,mytest库的名称
    await mongoose.connect('mongodb://localhost:27017/mytest')
}
mian().then(res=>{
    console.log('mongodb连接成功')
}).catch(err=>{
    console.log(err)
    console.log('mongon链接失败')
})
const user=new mongoose.Schema({//集合里面的参数
    username:{
        type:String,//数据类型
        require:true//是否必须
    },
    age:{
        type:String,
        require:true
    }
})
const userModel=mongoose.model('User',user)//创建集合