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

Node.js+MongoDB写一些前后端的东西,比如分页,比如session

时间:2023-04-03 11:40:23 Node.js

1、首先分享一个简单的分页查询函数,先上传代码,functionfindByPagination(collections,selector,page,count,fn){letskipnumber=(page-1)*count;让总计数;MongoClient.connect(Urls,function(err,db){letcollection=db.collection(collections);assert.equal(null,err);console.log("正确连接到服务器");collection.find(selector).count((err,res)=>{assert.equal(err,null);totalCount=res;});collection.find(selector).skip(skipnumber).limit(count).toArray(function(err,结果){try{assert.equal(err,null);fn({success:true,data:result,totalCount:totalCount});}catch(e){console.log(e);fn({success:false,数据:[],totalCount:totalCount});}});数据库关闭();});page是当前页码,count是一页显示的项目数。2.说说Node.js操作mongodb时如何在数据库中增删数组。如果(req.session.userId){让bookId=req.body.bookId;让数量=req.body.quantity;让totalNum=req.body.totalNum;console.log('数量:',数量);req.session.userId=req.session.userId;handleDb("userCollection",[{_id:newObjectID(req.session.userId),cart:{$elemMatch:{bookID:newObjectID(bookId)}}},{$set:{'cart.$.quantity':quantity,totalnum:totalNum}}],update,data=>{res.end(`{"totalNum":${totalNum}}`);})}这里的if判断req.session.userId是否存在。不太明白为什么一定要这样写。如果不这样写,刷新一次session,就变得undifine了。可能每个会话的请求都不同。我猜这里的查询意思是设置cart数组中指定ID的图书数量。如果将$set改为$inc,则为指定ID的图书数量。添加handleDb("userCollection",[{_id:newObjectID(req.session.userId)},{$pull:{car??t:{bookID:newObjectID(bookId)}}}],update,data=>{handleDb("userCollection",{_id:newObjectID(req.session.userId)},find,userdata=>{letuser=userdata.data[0];lettotalnum=user.totalnum;res.end(`{"totalNum":${totalnum}}`);})})删除cart数组中包含指定bookID的item,最后贴上Meanstack写的简单的前后端交互Demo[BookOnlineMall](https://github.com/ZoeLeee/bookstore)

最新推荐
猜你喜欢