资讯专栏INFORMATION COLUMN

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

Jokcy / 355人阅读

摘要:首先,先分享用来做分页查询的简单函数,先上代码,是当前页数,为一页显示多少条。

1.首先,先分享用来做分页查询的简单函数,先上代码,

function findByPagination(collections, selector, page, count, fn) {
    let skipnumber = (page - 1) * count;
    let totalCount;
    MongoClient.connect(Urls, function (err, db) {
        let collection = db.collection(collections);
        assert.equal(null, err);
        console.log("Connected correctly to server");

        collection.find(selector).count((err, res) => {
            assert.equal(err, null);
            totalCount = res;
        });
        collection.find(selector).skip(skipnumber).limit(count).toArray(function (err, result) {
            try {
                assert.equal(err, null);
                fn({
                    success: true,
                    data: result,
                    totalCount: totalCount
                });
            } catch (e) {
                console.log(e);
                fn({
                    success: false,
                    data: [],
                    totalCount: totalCount
                });
            }

        });
        db.close();
    });

page是当前页数,count为一页显示多少条。

2.说说Node.js操作mongodb时怎么对数据库里面的数组进行增删该查

if (req.session.userId) {
        let bookId = req.body.bookId;
        let quantity = req.body.quantity;
        let totalNum = req.body.totalNum;
        console.log("quantity: ", quantity);
        req.session.userId = req.session.userId;
        handleDb("userCollection", [{ _id: new ObjectID(req.session.userId), cart: { $elemMatch: { bookID: new ObjectID(bookId) } } }, { $set: { "cart.$.quantity": quantity, totalnum: totalNum } }], update, data => {
            res.end(`{"totalNum":${totalNum}}`);
        })
    }

这里的if判断req.session.userId是否存在,不太理解为什么一定要这么写,不这样写刷新一次session就会变成undifine,大概是每次访问时session都是不一样的req吧,猜的
这里查询的意思是对cart数组里指定ID的书籍的数量进行设置,如果把$set改成$inc就是指定Id的书籍的数量进行增加

handleDb("userCollection", [{ _id: new ObjectID(req.session.userId) }, { $pull: { cart: { bookID: new ObjectID(bookId) } } }], update, data => {
            handleDb("userCollection", { _id: new ObjectID(req.session.userId) }, find, userdata => {
                let user = userdata.data[0];
                let totalnum = user.totalnum;
                res.end(`{"totalNum":${totalnum}}`);
            })
        })

删除cart数组中包含指定bookID的项目

最后贴上Mean stack写的简单的书店前后端交互Demo

[图书在线商城](https://github.com/ZoeLeee/bookstore)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95650.html

相关文章

  • 一些基于React、Vue、Node.jsMongoDB技术栈的实践项目

    摘要:利用中间件实现异步请求,实现两个用户角色实时通信。目前还未深入了解的一些概念。往后会写更多的前后台联通的项目。删除分组会连同组内的所有图片一起删除。算是对自己上次用写后台的一个强化,项目文章在这里。后来一直没动,前些日子才把后续的完善。 欢迎访问我的个人网站:http://www.neroht.com/ 刚学vue和react时,利用业余时间写的关于这两个框架的训练,都相对简单,有的...

    tangr206 评论0 收藏0
  • Node & 单页应用 来做一个完整用户系统吧!

    摘要:在路由回调函数里面操作的时候,直接用就可以获取到客户端的值。用回调函数来写后期看起来会很吃力看有没有重名的看是不是同一邮箱又想重复注册如果是以上两种情况,就发送错误信息。此账户名已经被注册。 1. 开场白 用户系统是许多网站的基础。这篇文章主要就是讲解如何写一个基于Node的单页应用的用户系统,这个用户系统的功能包括:注册,登录,自动登录,忘记密码,修改密码,邮件激活。如果使用在后端使...

    Chaz 评论0 收藏0
  • 如何打造一个令人愉悦的前端开发环境(三)

    摘要:的最后一个大招就是替换一些传统的服务端语言,例如,,等,在业务层上面使用来开发服务端完全不成问题。更多的的使用细节和技巧建议关注美团博客大搜车论坛下一篇我们开启如何结合和搭建一个开发环境和项目目录 往期回顾 前面2期都讲得是浏览器端的东西比较多,包括Webpack,虽然是Node处理的,但是还是浏览器端用的多,对于现在的前端开发来说,不懂一点服务端的东西,简直没办法活,一般的招聘要求都...

    cgh1999520 评论0 收藏0
  • 全栈最后一公里 - Node.js 项目的线上服务器部署与发布

    摘要:没有耐心阅读的同学,可以直接前往学习全栈最后一公里。我下面会罗列一些,我自己录制过的一些项目,或者其他的我觉得可以按照这个路线继续深入学习的项目资源。 showImg(https://segmentfault.com/img/bVMlke?w=833&h=410); 本文技术软文,阅读需谨慎,长约 7000 字,通读需 5 分钟 大家好,我是 Scott,本文通过提供给大家学习的方法,...

    singerye 评论0 收藏0
  • 全栈最后一公里 - Node.js 项目的线上服务器部署与发布

    摘要:没有耐心阅读的同学,可以直接前往学习全栈最后一公里。我下面会罗列一些,我自己录制过的一些项目,或者其他的我觉得可以按照这个路线继续深入学习的项目资源。 showImg(https://segmentfault.com/img/bVMlke?w=833&h=410); 本文技术软文,阅读需谨慎,长约 7000 字,通读需 5 分钟 大家好,我是 Scott,本文通过提供给大家学习的方法,...

    Nosee 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<