node小程序购物车接口

  1. 建模:
    sequelize model:generate --name Cart --attributes productId:integer,userId:integer,number:integer
    推模: sequelize db:migrate
  2. 创建一个 cart.js,  然后在app.js中引入这个文件
  3. 为调试方便,先在路由中间件中,加上不要验证cart路由地址
  4. 因为当前购物车表和商品表还有用户表(购物车商品属于哪个用户),所以要建立关联:
    image
  5. 在 cart.js里 创建一个  post接口:  根据小程序扫到的条形码 ,来搜索Product商品表里面有没有这个 条形码对应的商品
  6. 如果Product表里  ,没有这个条形码的商品:
    image
    image
  7. 如果Product表里, 有这个商品:   就查询这个商品 在不在购物车Cart表中
  8. 如果购物车Cart表里 没有这个商品, 就在购物车添加这个商品
    image
    image
    image
  9. 如果购物车表中 已经有这个商品存在 ,  就把当前的商品数量  number增加1
    image
    image
    image
  10. 代码:
  11. var express = require('express');
    var router = express.Router();
    var models = require('../../models')
    
    router.post('/',async function(req,res,next){
        var code = req.body.code;// 这里的code是 扫描进去的条形码
        // 1.根据扫入的条形码 来搜索 Product表中,有没有这个商品
        let product = await models.Product.findOne({
            where:{
                code:code,
            }
        })    
        // 2.如果Product表中没有这个商品,就返回
        if(!product){
            res.json({success:false,message:'此商品不存在'})
            return;
        }
        // 3.如果Product表中有这个商品,
        //  就查询这个商品 在不在购物车Cart表中   created:不存在为true,存在false
        let [cart,created] = await models.Cart.findOrCreate({
            where:{
                productId:product.id,
                userId: 9/*req.decoded.user.id*/
            },
            // 如果这个商品不在购物车中的话, 就把这个商品添加进购物车
            defaults:{
                number:1,
                userId: 9 /*req.defaults.user.id*/,
                productId:product.id
            }
        })
        // 4. 9.如果购物车表中 已经有这个商品存在 
        if(!created){
            let cart = await models.Cart.findOne({
                where:{productId:product.id}
            })
            cart.increment('number')// 就把当前的商品数量  number增加1
            return res.json({success:true,message:'增加成功'})
        }
        res.json({success:true,message:'添加成功',data:cart})
    })
    
    module.exports = router;

猜你喜欢

转载自www.cnblogs.com/cl1998/p/13170541.html