koa mogoose 创建后台服务连接数据库并进行增删改查

懵懂的女人 提交于 2019-12-05 07:13:17

本文原创 ,转载请标明出处

1 koa的基本使用

koa是基于node平台的web开发框架

使用koa去创建一个服务器

const Koa = require('koa')
// bodyParser 处理post请求
const bodyParser = require('koa-bodyparser')
const port = 7001
const app = new Koa()

app.use(bodyParser())
app.use(async ctx => {
  ctx.body = 'hello , i am first koa applicance'
})

app.listen(port)

  koa 使用 下面方式 利用ctx.body将内容或接口数据返回给到页面

app.use(async ctx => {
  ctx.body = ''
})

  下面一个从后台获取数据返回给到页面 的demo(作为中间层)

const Koa = require('koa')
// bodyParser 处理post请求
const bodyParser = require('koa-bodyparser')
// 用于请求后台数据 当我们想把改服务作为web和后台的中间层时 需要使用request-promise 或者request 当然还有其他的
const request = require('request-promise')
const port = 7001
const app = new Koa()

app.use(bodyParser())

// 向后台发起请求
let _callApi = (url, datas, headers) => {
  // 本文以POST请求为例说明,其他方式请参阅request-promise官方文档
  let options = {
    uri: url,
    method: 'POST',
    body: datas,
    json: true,
    timeout: 10000
  }
  if (headers) {
    options.headers = headers
  }
  return new Promise((resolve, reject) => {
    request(options)
      .then(res => {
        resolve(res)
      })
      .catch(err => {
        reject(err)
      })
  })
}

app.use(async ctx => {
  ctx.body = 'hello , i am first koa applicance'
})

app.use(async ctx => {
  let queryUrl = ctx.request.url.split('?')[0]
  if (queryUrl === '/mytest/testpost') {
    let data = ctx.request.body
    let response = await _callApi('apiUrl', data)
    ctx.body = response
  }
})
app.listen(port)

  使用 ctx.request 将web端请求的内容拿到,根据自己的需求组装 将内容发送给后台获取接口数据 可以自行打印ctx.request

注意:当在项目中使用session时 需要有配置文件并且给app设置keys 

// 存储 内容
const CONFIG = {
  overwrite: false,
  maxAge: 7200000 //过期时间设置两个小时
}
app.keys = ['myvars is changing']
app.use(session(CONFIG, app))

// 在接口中存数据
ctx.session.username = 'myName'
// 在接口中去数据
let userName =  ctx.session.username

  当然 当我们接口很多时 可以使用koa-router进行路由的定义 ,koa-router支持很多接口方式

  router.get('/users', ctx => {
    // ....
  })
  router.post('/users', ctx => {
    // ....
  })
  .put('/user/:id', ctx => {
    // ....
  })
  .del('/user/:id', ctx => {
    // ....
  })
  .all('/user/:id', ctx => {
    // ....
  });

 koa-router 引入方式:

const Router = require('koa-router')
const router = new Router()
//或者下面的方式
const router = require('koa-router')()

  

 

2 mongodb 的基本用法

mongodb的安装请参见菜鸟教程:https://www.runoob.com/mongodb/mongodb-window-install.html 或者参见其他

(安装教程不同的是现有的 安装包下载完直接默认了 data和log的存放地址 可以自定义修改)

1.数据库 
     创建 : use myDbone 
     查看: db  或 show dbs

2 集合 (相当于mysql的表格)
     创建集合:db.createCollection(name, options)  options可选 指定内存的大小索引等 详细信息见官网或菜鸟教程
     查询结合:show tables  或 show collections
     删除几个: db.myColl.drop()
3 文档 (相当于mysql的行)
     插入文档:db.myColl.insert({title:‘myFirst’,url:'www.baidu.com'}或者变量名)
     查找文档:db.myColl.find() 查找所有
             db.myColl.find({title:‘myFirst’})
     更新文档:db.myColl.update({title:myFirst},{$set:{title:'myFirltUpdate'}}) 按条件查找内容并进行替换
     删除文档:db.myColl.remove({title:myFirstUpdate}) 删除查找到的内容
             db.myColl.remove({}) 删除所有文档

3 koa 连接mongoose 进行增删改查

未完 待续

基于上面的两点说明 下面直接给出demo作为参考

详细代码地址:https://github.com/liangxianh/koa-mongoose.git 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!