四时宝库

程序员的知识宝库

Javascript全栈(NodeJs+Vue+Element)0x04 Server端-CURD接口开发

环境准备

Bash
npm i express@next mongoose cors

创建express实例

Bash
// 创建express实例
// server\index.js
// 导入express包
const express = require("express");
// express实例化
const app = express();
// 跨域访问
app.use(require("cors"));
// 数据json
app.use(express.json());
// 引入admin route
require("./routes/admin")(app);
// 导入db config
require("./plugins/db")(app);
// 建立监听
app.listen(3000,()=>{
    console.log('http://localhost:3000');
});

创建数据库插件

Bash
// 数据库插件db.js
// ./plugins/db.js
module.exports = app =>{
	const mongoose = require("mongoose");
   mongoose.connect('mongodb://127.0.0.1:27017/node-vue-moba',{
       useNewUrlParser:true,
       useUnifiedTopology:true
   });
}

创建分类数据模型

Bash
// 数据model
// ./models/Category.js
// 导入包
const mongoose = require("mongoose");

// 定义schema
const scheme = new mongoose.Schema({
    name:{
        type : String
    }
})
// 导出数据模型
module.exports = mongoose.model('Category',scheme)

创建admin路由

Bash
// 创建路由
// ./routes/admin/index.js
// 导入express包
module.exports = app =>{
  const express = require("express");
  // 初始化一个router
  const router = express.Router();
  // 引入模型
  const Catergory = require("./models/Category.js");
  // post方法实现
  router.post('/categories',async(req,res)=>{
    // 创建模型
    const model = await Category.create(req.body);
    // 请求响应
    res.send(model)
})
    app.use('/admin/api',router);
}

前端发送网络请求

Bash
// js
async save(){      
  // 发送post请求
  await this.$http.post('categories',this.model)
  //  跳转至分类列表
  this.$router.push('/categories/list')
  this.$message({
     type: 'sucess',
     message: '保存成功'
    })
  }

完善接口 实现增、删、改、查

Bash
// server\index.js
// admin route
module.exports = app => {
  // 导入express
  const express = require('express')
  // 
  const router = express.Router()

  // 引入Category数据模型
  const Category = require("../../models/Category")
  // post请求实现,增
  router.post('/categories',async(req,res)=>{
    // 创建模型
    const model = await Category.create(req.body)
    res.send(model)
  })
    // delete 删
  router.delete('/categories/:id',async(req,res)=>{
    // 创建模型
    const model = await Category.findByIdAndDelete(req.params.id,req.body)
    res.send({
      success:true
    })
  })
  // put 改
  router.put('/categories/:id',async(req,res)=>{
    // 创建模型
    const model = await Category.findByIdAndUpdate(req.params.id,req.body)
    res.send(model)
  })
  // console.log(router)
  // get 查
  router.get('/categories',async(req,res)=>{
    // 创建模型
    const items = await Category.find()
    res.send(items)
  })
  // get 获取对应ID内容
  router.get('/categories/:id',async(req,res)=>{
    // 创建模型
    const model = await Category.findById(req.params.id)
    res.send(model)
  })
  app.use('/admin/api',router)
}

后面将完善为通用接口。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接