当前位置: 首页 > 后端技术 > Node.js

【mongo】使用node创建接口,查询mongo,接口返回结果(2-3)

时间:2023-04-03 19:05:27 Node.js

1.初始化一些测试数据,清空原始数据插入100个测试数据节点initData.jsinitData.jsconstmongodb=require('./models/db');mongodb.once('connect',async()=>{constcol=mongodb.col('fruits');//删除现有数据awaitcol.deleteMany();constdata=newArray(100).fill().map((value,index)=>{return{name:'XXXX'+index,price:index,category:Math.random()>0.5?'vegetables':'fruit',}})//插入新数据awaitcol.insertMany(data);console.log('insert测试数据成功');})models/db.jsconstconf=require('./conf');const{EventEmitter}=require('events');//数据库异步连接工具//clientEndconst{MongoClient}=require('mongodb');classMongodb{constructor(conf){this.conf=conf;this.emmiter=newEventEmitter();//连接this.client=newMongoClient(conf.url,{useNewUrlParser:true,})this.client.connect(err=>{console.log(err);if(err){抛出错误;}console.log('连接正常');this.emmiter.emit('connect')})}col(colName,dbName=conf.dbName){returnthis.client.db(dbName).collection(colName);}once(event,cb){this.emmiter.once(event,cb)}}module.exports=newMongodb(conf)models/conf.jsmodule.exports={url:'mongodb://127.0.0.1:27017',dbName:'local',}2、使用http://localhost:3000/api/list?keyword=20访问对外接口,传入参数pageNum、pageSize、category、keyword查询节点搜索.jssearch.jsconstexpress=require('express');constapp=express();constpath=require('path');constmongo=require('./models/db');app.get('/api/list',async(req,res)=>{//分页查询const{pageNum,pageSize,category,keyword}=req.query;letsize=Number(pageSize||5);try{//build查询条件constcondition={};if(category){condition.category=category;}if(keyword){condition.name={$regex:newRegExp(keyword)}}constcol=mongo.col('fruits');consttotal=awaitcol.find(condition).count();constfruits=awaitcol.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)=>{constcol=mongo.col('fruits');constdata=awaitcol.distinct('category');res.json({code:1,data:数据,})})app.listen(3000);