首页 > 数据库 >直播app开发,使用koa和MongoDB实现分页和模糊查询

直播app开发,使用koa和MongoDB实现分页和模糊查询

时间:2023-04-07 14:23:16浏览次数:38  
标签:const koa MongoDB app ctx usersRouter page

直播app开发,使用koa和MongoDB实现分页和模糊查询

1. 分页

per_page:一页多少条数据

page:第几页

 

// index.js
const Koa = require('koa')
const app = new Koa()
const Router = require('koa-router')
const usersRouter = new Router({ prefix: '/users'})
// MongoDB数据库User模型
const User = require('/models/users.js')
 
const bodyparser = require('koa-bodyparser')
app.use(bodyparser()) 
 
// 用户列表
usersRouter.get('/', (ctx) => { 
    // 分页 http://localhost:3000/users?page=2&per_page=3
    const { per_page = 10 } = ctx.query
    const page = Math.max(ctx.query.page * 1, 1) - 1
    const perPage = Math.max(per_page * 1, 1)
    ctx.body = await User.find().limit(perPage).skip(page * perPage)
})
 
app.use(usersRouter.routes())
app.use(usersRouter.allowedMethods())
 
app.listen(3000)

2. 模糊查询

MongoDB中实现模糊查询要使用正则表达式

 


// index.js
const Koa = require('koa')
const app = new Koa()
const Router = require('koa-router')
const usersRouter = new Router({ prefix: '/users'})
// MongoDB数据库User模型
const User = require('/models/users.js')
 
const bodyparser = require('koa-bodyparser')
app.use(bodyparser()) 
 
// 用户列表
usersRouter.get('/', (ctx) => { 
    // 分页+模糊查询 http://localhost:3000/users?page=1&per_page=3&q=李
    const { per_page = 10 } = ctx.query
    const page = Math.max(ctx.query.page * 1, 1) - 1
    const perPage = Math.max(per_page * 1, 1)
    // 模糊查询,要用正则表达式
    ctx.body = await User.find({name:new RegExp(ctx.query.q)}).limit(perPage).skip(page * perPage)
})
 
app.use(usersRouter.routes())
app.use(usersRouter.allowedMethods())
 
app.listen(3000)

 

3. 字段过滤

select 用于显示在MongoDB数据库中select:false默认不显示,但是现在需要显示的数据

 

 

 

// index.js
const Koa = require('koa')
const app = new Koa()
const Router = require('koa-router')
const usersRouter = new Router({ prefix: '/users'})
// MongoDB数据库User模型
const User = require('/models/users.js')
 
const bodyparser = require('koa-bodyparser')
app.use(bodyparser()) 
 
// 根据用户id查询某个用户
usersRouter.get('/:id', (ctx) => { 
    // 字段过滤 http://localhost:3000/users/6268c33f5ecce8e573b27366?fields=educations;business
    const { fields = '' } = ctx.query
    const selectFields = fields.split(';').filter(f => f).map(f => ' +' + f).join(' ') //注意这里是空格+
    const populateStr = fields.split(';').filter(f => f).map(f => {
        if (f === 'employments') {
            return 'employments.company employments.job'
        }
        if (f === 'educations') {
            return 'educations.school educations.major'
        }
        return f
    }).join(' ')
    const user = await User.findById(ctx.params.id).select(selectFields).populate(populateStr)
    if (!user) {
        ctx.throw(404, '用户不存在')
    }
    ctx.body = user
})
 
app.use(usersRouter.routes())
app.use(usersRouter.allowedMethods())
 
app.listen(3000)

 

 以上就是直播app开发,使用koa和MongoDB实现分页和模糊查询, 更多内容欢迎关注之后的文章

 

标签:const,koa,MongoDB,app,ctx,usersRouter,page
From: https://www.cnblogs.com/yunbaomengnan/p/17295997.html

相关文章

  • AppleScript key code
    https://eastmanreference.com/complete-list-of-applescript-key-codestellapplication"SystemEvents"keycode49endtellPlay:tellapplication"iTunes"toplayPause:tellapplication"iTunes"topause......
  • SpringBoot @SpringBootApplication(exclude={DataSourceAutoConfiguration.calss})注
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.calss})该注解的作用是,排除自动注入数据源的配置,用exclude属性进行排除指定的类,在springBoot中使用多数据源时,加上@SpringBootApplication(exclude={DataSourceAutoConfiguration.calss})DataSourceAutoConfigur......
  • uniapp引入阿里巴巴矢量图标
    1、先去图标库下载图标 2.解压下载的文件进入  、 3、输入npminstall-giconfont-tools,再输入iconfont-tools最后无脑回车  4.文件夹会多一个iconfont-weapp的文件夹  5.iconfont-weapp-icon.css放入项目随机位子    6.在App.vue文件夹中,引......
  • uniapp修改数组对象属性,视图不刷新问题
    uniapp最大的坑遇到修改数组属性视图不更新的问题 有两种解决方法一:this.$forceUpdate();强制更新,这个确实在H5端更新了,但是微信小程序还是没有更新二:this.$set(),一样不行修改数组后视图依旧不刷新最后用$.elmit()方法在子组件修改父组件传给子组件的值达到父子组件双向......
  • 纯电动汽车动力性经济性开发程序 Matlab AppDesigner 汽车性能开发工具
    纯电动汽车动力性经济性开发程序MatlabAppDesigner汽车性能开发工具电动汽车动力性计算电动汽车动力总成匹配写在前面:汽车动力性经济性仿真常用的仿真工具有AVLCruise、ameSIM、matlabsimulink、carsim等等,但这些软件学习需要付出一定时间成本,有很多老铁咨询有没有方便入......
  • 安卓源码,安卓开发,跑步打卡项目app源码
    安卓源码,安卓开发,跑步打卡项目app源码,包括源码和简单文档YID:9675644491117436......
  • uni-app:nvue:配置底部安全区域(hbuilderx 3.7.3)
    一,文档地址:https://uniapp.dcloud.net.cn/collocation/manifest-app.html#full-manifest如图: 说明:offset:底部安全区域偏移,"none"表示不空出安全区域,"auto"自动计算空出安全区域二,编辑配置文件:manifest.json,如图所示,选择源码视图,在app-plus一项下进行设置1,取......
  • spring---->Spring事务与ApplicationEventPublisher
    Spring事务与ApplicationEventPublisher@Transactionalpublicvoidhandle(){varaccount=Account.builder().username("huhx").password("pass").build();accountRepository.save(account);pub......
  • 16_Privacy_preserving_data_aggregation_scheme_for_mobile_edge_computing_assisted
    ......
  • pycharm中配置MongoDB数据库出现未找到驱动程序类 'com.dbschema.MongoJdbcDriver' (v
      之前重新装了一下pycharm,发现MongoDB数据库连接时发生了错误。具体错误:未找到驱动程序类'com.dbschema.MongoJdbcDriver'(view)。这怎么解决呢?其实很简单,在驱动程序中选一个版本进行下载就好了。步骤如下:1、找到驱动程序,点击MongoDB,再点击+号。2、找到最新版本,点击下载......