小电商项目实战 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

访问视图


接着在routes目录添加cart.js文件(index.js文件中引用),来定义路由处理规则。

  1. 比如cart路径的处理,如下:

  2. 1.1 检测登陆用户是否过期,已过期则跳转login页同时给出提示信息。

  3. 1.2 通过global.dbHelper.getModel方法获取cart模型。
  4. 1.3 通过find查询用户所有商品并传入模板,条件:用户ID,结算状态。
  5. 1.4 贴出部分代码:

    app.get('/cart', function(req, res) {
     ......
    Cart.find({"uId":用户ID,"cStatus":false},function (error, docs) {
       res.render('cart',{carts:docs});
    });
    });
    

  6. 加入购物车按钮链接所对应路径的处理,如:/addToCart/:商品id

  7. app.get("/addToCart/:id", function(req, res) {...});
    
  8. 2.1 通过req.params.id获取商品ID号并检测登陆用户状态。

  9. 2.2 通过global.dbHelper.getModel方法获取购物车(cart)、商品(commodity)模型。
  10. 2.3 商品已存在则进行更新操作,贴出部分参考代码:

    Cart.update({"uId":用户ID,"cId":商品ID},{$set:{cQuantity:已有数量+1}}
    
  11. 2.4商品未存在则进行添加操作,贴出部分代码:

    Commodity.findOne({"_id": 商品ID}, function (error, doc) {
        Cart.create({
            uId: 用户ID,
            cId: 商品ID,
            cName: doc.name,
            cPrice: doc.price,
            cImgSrc: doc.imgSrc,
            cQuantity : 1
        },function(error,doc){
            if(doc){
                res.redirect('/home');
            }
        });
    });