1. 初始化一些测试数据,清空原有的数据并插入100条测试数据
node initData.js
initData.js
const mongodb = require('./models/db');mongodb.once('connect', async () => {    const col = mongodb.col('fruits');    // 删除已存在的数据    await col.deleteMany();    const data = new Array(100).fill().map((value, index) => {        return {            name: 'XXXX' + index,            price: index,            category: Math.random() > 0.5 ? '蔬菜' : '水果',        }    })       // 插入新建的数据    await col.insertMany(data);    console.log('插入测试数据胜利');})
models/db.js
const conf = require('./conf');const { EventEmitter } = require('events');   // 数据库异步连贯工具// 客户端const { MongoClient } = require('mongodb');class Mongodb {    constructor(conf) {        this.conf = conf;        this.emmiter = new EventEmitter();        // 连贯        this.client = new MongoClient(conf.url, {            useNewUrlParser: true,        })        this.client.connect(err => {            console.log(err);            if (err) {                throw err;            }            console.log('连贯失常');            this.emmiter.emit('connect')        })    }    col(colName, dbName = conf.dbName) {        return this.client.db(dbName).collection(colName);    }    once(event, cb) {        this.emmiter.once(event, cb)    }}module.exports = new Mongodb(conf)
models/conf.js
module.exports = {    url: 'mongodb://127.0.0.1:27017',    dbName: 'local',}
2. 对外接口

应用http://localhost:3000/api/list?keyword=20拜访接口,并传参pageNum、pageSize、category、keyword查问

node search.js
search.js
const express = require('express');const app = express();const path = require('path');const mongo = require('./models/db');app.get('/api/list', async (req, res) => {    // 分页查问    const {pageNum, pageSize, category, keyword} = req.query;    let size = Number(pageSize || 5);    try {               // 构建查问条件        const condition = {};        if (category) {            condition.category = category;        }        if (keyword) {            condition.name = {$regex: new RegExp(keyword)}        }        const col = mongo.col('fruits');        const total = await col.find(condition).count();        const fruits = await col.find(condition)            .skip((pageNum - 1) * size)            .limit(size)            .toArray();        res.json({            code: 1,            data: {                fruits: fruits,                page: {                    total: total,                }            }        })    } catch (error) {        console.log(error)    }})app.get('/api/category', async (req, res) => {    const col = mongo.col('fruits');    const data = await col.distinct('category');    res.json({        code: 1,        data: data,    })})app.listen(3000);