koa脚手架
cmd安装依赖
npm i koa-generator -g
创建项目 在vue项目下面打开Powershell窗口创建
koa2 server
启动server项目 用vcode打开 然后输入
npm inpm run dev
浏览器输入localhost:3000
二 导入json数据
1.根目录建resource文件夹,将json数据放入resource
2.数据库导入json文件

操作数据库
安装
yarn add mongoose
在根目录下面新建models文件夹 有db.js goods.js
models/db.js
const mongoose=require('mongoose')mongoose.connect( 'mongodb://127.0.0.1:27017/shop', {useNewUrlParser: true},(err)=>{if(err){throw err};console.log("数据库连接成功")});module.exports=mongoose;
models/goods
const mongoose = require('./db')var GoodsSchema =new mongoose.Schema({productId:String,productName:String,salePrice:Number,productImage:String,productUrl:String})var Goods= mongoose.model('Admin',GoodsSchema,'goods')module.exports=Goods;
routes/index.js
const router = require('koa-router')()const GoodsModel=require('../models/goods')router.get('/', async (ctx) => {var data=await GoodsModel.find({});ctx.body=data})module.exports = router
给前端返回的数据格式
{//200请求成功 1001没有请求成功code:200,msg:"请求成功",result:data,total:17//从数据库中请求的数据装到result中}router.get('/', async (ctx) => {var data=await GoodsModel.find({});ctx.body={code:200,msg:"首页数据请求成功",result:data,total:data.length}})

const UsersModel=require('../models/users')//主路由,子路由方式router.prefix('/users')//主路由router.get('/', async (ctx) =>{var data=await UsersModel.find({})ctx.body={code:200,msg:"数据请求成功",result:data,}})//子路由router.get('/bar', function (ctx, next) {ctx.body = 'this is a users/bar response'})
跨域
yarn add koa2-cors
const cors=require('koa2-cors')//配置允许跨域的域名app.use(cors({/* 只允许本地地址访问 */origin:"http://192.168.14.27:8080"/* * origin:"*" 允许所有地址访问 */}))
axios-get
根据价格大小进行查询
data(){return{searchPrice:[{gt:0,lt:100,id:1001},{gt:100,lt:500,id:1002},{gt:500,lt:1000,id:1003},{gt:1000,lt:5000,id:1004}],goodsList:[]}},mounted(){this.$http('goods/list').then(res=>{this.goodsList=res.data.result})},
params将数据传递给后端
this.$http({url:'/goods/price',methods:'get',params:{gt,lt}}).then(res=>{console.log(res)})
后台query接收get传值
router.get("/goods/price",async ctx=>{/* 传递给后台的值,用ctx.query接收get传值,即是问号后面的值 */var {gt,lt}=ctx.query;})
对数据库进行查询
var data=await GoodsModel.find({salePrice:{$gt:gt,$lt:lt}})
对有数据和没数据的处理
后台
/* 根据价格大小查询 */router.get("/goods/price", async ctx => {var { gt, lt } = ctx.query;var data = await GoodsModel.find({ salePrice: { $gt: gt, $lt: lt } })if (data.length) {ctx.body = {code: 200,msg: "数据请求成功",result: data,total: data.length}}else{ctx.body = {code:1001,msg:"没有数据"}}})
前台处理
methods: {handlePrice(gt, lt) {console.log(gt, lt);this.$http({url: "/goods/price",method: "get",params: {gt,lt}}).then(res => {if (res.data.code == 200) {this.goodsList = res.data.result;}else{this.goodsList = [];this.$message({duration:1000,message:res.data.msg,type: 'warning'//这是element-ui 弹窗message})}});}}

