美文网首页
使用Koa制作地址数据接口

使用Koa制作地址数据接口

作者: 时不我与_ | 来源:发表于2020-04-09 20:17 被阅读0次

Koa短信接口
Koa+ES6
Mongoose
Sequelize
地址接口无论在我们任何一个项目中,都是十分重要并且基本的功能的。
所以本次我们通过使用Koa结合MongoDB数据库来制作一个地址接口。

  • 首先我们肯定是需要先拥有地址数据,并且导入数据库的。所以我在网上有找到一些地址信息文件,这里我就不放具体链接了,百度上面基本上一大堆。

  • 其次我是使用的MongoDB可视化工具,MongoDB Compass来进行操作的。当然也有小伙伴使用的是Robo 3T之类的不过不影响。


    Compass
  • 进入之后我们直接点击CONNECT即可链接本地的数据库。


    选中集合引入
  • 在选中集合之后 我们的集合中是没有任何数据的,这个时候页面上会显示Import Data引入数据,然后我们进行点击,将我们存在本地的JSON文件引入即可。


    import
  • 有的小伙伴可能用不好这样的方法,我们也可以使用inser Document的方法直接将内容复制过来


    inser
  • 引入成功后就是如下图所示的样式。


    address
  • 接下来我们就可以将我们的数据库放在一边了,接着进行我们Koa接口的实现。

//首先我们还是建立模型,不需要特别多的内容。
import mongoose from 'mongoose'
const Schema = mongoose.Schema
const AddressSchema = new Schema({
  id: {
    type: Number
  },
  name:{
    type: String
  }
})

export default mongoose.model('area', AddressSchema)
  • 接下来我们就需要使用Mongoose来进行数据库的数据请求了。
import Router from 'koa-router'
import Address from '../../dbs/models/Address'
//引入路由以及模型文件

const router = new Router({
  prefix: '/address'
})
//定义路由前缀
router.get('/', async (ctx, next) => {
  const findResult = await Address.find({})
  if(findResult.length > 0){
    ctx.body = {
      status:200,
      msg:'城市列表',
      success:true,
      data:findResult
    }
    ctx.status = 200
  } else {
    ctx.status = 500;
    ctx.body = {
      success: false,
      msg:'啊哦,你瞅瞅你是不是请求错了',
      status: 500
    }
  }
})

  • 通过如上的方式我们就可以进行城市列表的请求了,但是很多时候我们不需要那么多的数据,只需要省份做一个省份列表。 所以我们就需要再完善一下了。
router.get('/getProvince', async (ctx, next) => {
  const findResult = await Address.find({},{name:true,id:true})
//这样我们只将ID以及Name设置为True 这样我们查询的数据中只会显示表中定义的name以及id了
  if(findResult.length > 0) {
    ctx.body = {
      findResult,
      status: 200,
    }
  } else {
    ctx.body = {
      status: 500,
      msg: '啊哦,你查询的内容丢失了'
    }
  }
})
  • 然后我们肯定在逛电商的时候,或者点外卖的时候,让你选择省份之后,会根据省份进行加载市县之类的,所以我们需要接受参数省份,从而获取具体的城市。
router.get('/city', async (ctx, next) => {
  let { Province } = ctx.request.body
  console.log(Province)
  // const findResult = await Address.find({'name':Province})
  const findResult =await Address.find({ name:{$regex:Province,$options: '$i'}})
  if(findResult.length > 0) {
    ctx.body = {
      findResult,
      status: 200,
      msg: '查询成功'
    }
  } else {
    ctx.body = {
      status: 500,
      msg: '您查找的数据被丢进了异次元'
    }
  }
})router.get('/city', async (ctx, next) => {
  let { Province } = ctx.request.body
// 在这里我们使用了模糊查询的方式。
//因为很多用户是不一定会输入一个XX市、XX省固定的格式的。
//毕竟用户才是上帝,要从用户方便的角度来出发。
//他们很有可能只是输入一个北京、上海等等,所以我们需要进行模糊的匹配。
  const findResult =await Address.find({ name:{$regex:Province,$options: '$i'}})
  if(findResult.length > 0) {
    ctx.body = {
      findResult,
      status: 200,
      msg: '查询成功'
    }
  } else {
    ctx.body = {
      status: 500,
      msg: '您查找的数据被丢进了异次元'
    }
  }
})
  • 这样我们就完成了一个地址数据的请求了,然后接下来就是使用Postman来进行测试接口或者直接在客户端请求了。我这里就不展示请求数据啦,大家也可以亲自去尝试一下。
  • 还有 不要忘了将路由导出哦。
export default router
gogogo

相关文章

网友评论

      本文标题:使用Koa制作地址数据接口

      本文链接:https://www.haomeiwen.com/subject/bxshmhtx.html