直播app開發,使用koa和MongoDB實現分頁和模糊查詢

zhibo系統開發發表於2023-04-07

直播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) => { 
    // 分頁 
    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) => { 
    // 分頁+模糊查詢 李
    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) => { 
    // 欄位過濾 
    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實現分頁和模糊查詢, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2944375/,如需轉載,請註明出處,否則將追究法律責任。

相關文章