Node.js+MongoDB寫前後端的一些東西,比方分頁,比方session

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)
    原文作者:ZoeLee
    原文地址: https://segmentfault.com/a/1190000015371042
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞