koa的基本使用

主要实现了以下几个知识点:

1.koa中的路由如何引入
2.处理get请求,及获取参数
3.处理post请求,及获取参数
4.使用中间件koa-bodyparser(获取请求参数),koa-static(解析静态文件),
5.操作封装后的mongodb数据库,如何封装可以看我之前的文章:封装koa操作mongodb数据库方法

直接上代码,对应功能有注释

const koa = require("koa")
const router = require("koa-router")() // 路由
const render = require("koa-art-template") // 引入art-template
const bodyParser = require("koa-bodyparser") // 为了把请求的参数放在ctx.request.body
const static = require("koa-static") // 解析静态文件
const path = require('path');
const DB = require("./module/db")

const app = new koa()
app.use(bodyParser())

// 配置静态服务中间件 // 可配置多个
// app.use(static(__dirname + "/static"))
app.use(static(__dirname + "/ouDotPc"))

// app.use(static(__dirname + "/dist")) // 前端打包文件


// 3. 配置 koa-art-template模板引擎
render(app, {
  root: path.join(__dirname, 'ouDotPc'), // 视图的位置
  extname: '.html', // 后缀名 如:index.html
  debug: process.env.NODE_ENV !== 'production' //是否开启调试模式

})


// koa中的路由 返回index.html页面
router.get("/", async (ctx) => {
  //设置kookie
  ctx.cookies.set("userinfo", "zhangsan", {
    maxAge: 60 * 1000, // cookis过期时间60秒
    // path: "/news", // 可以访问cokie的页面吧
    // domain:".baidu.com", // 默认当前域名下可访问,可设置哪些域名可访问kookie
    // httpOnly:false, // 是否只有服务器可访问kookie

  })

  const data = await DB.find("order_item", {}) //数据库中查询表“order_item”

  
  await ctx.render('index', { // 4. 传参 渲染koa-art-template模板 index.html
    list: data
  })
})

// koa中的路由 返回add.html页面
router.get("/add", async (ctx) => {

  await ctx.render('add')
})

// koa中的路由 返回doAdd.html页面
router.post("/doAdd", async (ctx) => {

  const data = ctx.request.body

  const result = await DB.insert("order_item", data)
  try{
    if (result.acknowledged) {
      ctx.redirect("/")
    }
  }catch(err){
    console.log(err);
    return
  }
  
  
})


// koa中的路由 返回edit.html页面
router.get("/edit", async (ctx) => {

  const id = ctx.query.id // 获取参数
  const data = await DB.find("order_item", {"_id":DB.getObjectId(id)}) // 数据库中查询对应id的数据
  await ctx.render('edit', { // 4. 传参 渲染koa-art-template模板 edit.html
    userBbj: data[0]
  })


})

//POST接口 koa中的路由 返回doEdit.html页面
router.post("/doEdit", async (ctx) => {

  const filterJson = ctx.request.body // 获取post参数
  
  const result = await DB.update("order_item", {
    "_id": DB.getObjectId(filterJson.id)
  }, filterJson)
  
  if (result.acknowledged) {
    ctx.redirect("/")
  } else {
    ctx.body = result
  }
})

// koa中的路由 删除操作
router.get("/delete", async (ctx) => {
  const id = ctx.query.id
  const result = await DB.remove("order_item", {"_id":DB.getObjectId(id)})
  if (result.acknowledged) {
    ctx.redirect("/")
  }else{
    ctx.body = result
  }
})

app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值