node+mongoodb数据库配置

  1. 安装express

npm i express -g

npm i express-generator -g

  1. 创建express

创建项目: express 项目名

如果出现express无法运行代码报错,请查看

express代码报错

  1. app.js配置

  1. 安装中间件:

npm i cors 跨域中间件

npm i multiparty 静态文件中间件

npm i mongoose@6 数据库选择mongoose(@+版本号)

  1. 中间件引入

在App.js中

建议在其下面引入,


跨域// 跨域:安装第三方模块npm i cors 
let cors =require("cors")
app.use(cors())中间件
  1. 图片配置中间件

// 配置图片:先安装第三方模块npm i multiparty
app.use("/upload",express.static("upload"))
  1. token中间件配置(安装 npm i jsonwebtoken)

//token验证
let expressJwt =require("express-jwt")//token中间件
app.use(expressJwt({
  secret:"ma",
  algorithms:["HS256"]
}).unless({
  path:['/log']//不需要的token验证路由!基本所有接口都要写入
}))

app.js 的token


let jwt = require("jsonwebtoken")
let token ="Bearer "+jwt.sign({"name":pwd.uname,"password":pwd.pwd},"ma",{expiresIn:60})// 60存在时间  "Bearer "必须加括号!
  1. mongoose数据配置

在app.js同级建立model文件夹,里面建立文件db.js和model.js如图:npm i mongoose@版本号


const mongoose = require("mongoose")
mongoose.set("strictQuery",true)

mongoose.connect("mongodb://127.0.0.1:27017/houtai",(err)=>{//houtai是建立的数据库名
    if(!err){
        return console.log('数据库访问成功')
    }
    console.log("失败访问数据库")
})


module.exports=mongoose

const { Schema } =require("mongoose")//引入mobgoose
let mongoose =require("./db")//导入暴露的db.js
let user =new Schema({//配置表子段
    uname:String,
    level:Number
})
let header =new Schema({
    head:String,
    zhid:{
        type:mongoose.Types.ObjectId,//关联表
        ref:'zhid'
    }
})

 let userModel =mongoose.model("user",user,"user")//创建user表
 let headerModel = mongoose.model("header",header,"header")//创建header表
//create添加数据
// userModel.create({//userModel是user表添加的也是user的字段名的数据
//     uname:"user",
//     pwd:'123456',
//     level:2
// })
// headerModel.create({//userModel是header表添加的也是header的字段名的数据
//     head:"广告位",
//     zhid:"640e98a9dd3d307aa325d9b9"
// })
module.exports={//暴露
    userModel,headerModel
 }
//运行时要调用我在index.js调用的(以下代码是router文件夹的index.js)
//model导入数据
const {userModel,headerModel} = require("../model/model")
router.post('/log', async function(req, res) {//(!!!注意async异步!!!)
  let user=await userModel.find({uname:body.user})//简单查询下(调用成功会出现‘数据库访问成功’)
  res.send({
        code:200    
  })
})
  1. Router文件夹的index/user配置

index属于一级路由,user属于二级路由的

话不多说上代码,我写的是简单登录带token


var express = require('express');
var router = express.Router();
let app=express()
//token
let jwt = require("jsonwebtoken")
// body中间件
app.use(express.json())
app.use(express.urlencoded({extended:false}))
//model导入数据
const {userModel,headerModel} = require("../model/model")
/* GET home page. */
router.post('/log', async function(req, res) {
  let body= req.body//body接收数据
  let user=await userModel.find({uname:body.user})//简单查询下
  // console.log(user,"user")
  console.log(body)
  if(user[0]){
      let pwd=await userModel.findOne({uname:body.user,pwd:body.pass})//也是查询
      console.log(pwd,"pwd")
      if(pwd){
        let token ="Bearer "+jwt.sign({"name":pwd.uname,"password":pwd.pwd},"ma",{expiresIn:60})//生成token,(!切记"Bearer "要加空格)
        console.log(pwd,token,"token")
        return res.send({//返回值
          code:200,
          message:"登录",
          token
        }) }else{
      
        return res.send({
          code:250,
          message:"密码错误"
        })
      }
  }else{
      return res.send({
        code:404,
        message:"账号不存在"
      })
  }
});

module.exports = router;

配置基本就这些,前端就先不说了

  1. Router下的inde.js配置

  1. body中间键

配置中间件post传值的话要用body接收值

复制下app.js的


app.use(express.json());
app.use(express.urlencoded({ extended: false }));
  1. core跨域需要连接前端时

app.express()
var core =require("cors")
app.use(cors())
  1. fs文件操作模块

var fs =require("fs")
let data =JSON.parse(fs.readfileasync("读取文件路径"))//可用path模块使用 
  1. path路径查找和拼接


var path =require("path")
let ip = path.join(__dirname+"/")//join是路径拼接,__dirname当前文件地址
  1. multiparty静态文件上传

在app.js同级创建upload


//app.js配置
app.use("/upload",express.static("upload"))//存储图片'/uplaad'路径 后者名称

routes文件下的index.js
const multiparty =require("multiparty")//存储图片用
// 保存图片
router.post('/save',(req,res)=>{
  let from =new multiparty.Form()//调用multiparty 下的Form
  from.uploadDir='upload'//咱们创建的upload
  from.parse(req,(err,Datas,Imgdata)=>{
    console.log("http://localhost:3000/"+Imgdata.file[0].path);//http://localhost:3000/后端端口号,Imgdata是前端传递过来的,可以打印Imgdata查看
      res.send("http://localhost:3000/"+Imgdata.file[0].path)
  })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值