node小程序购物车接口
- 建模:
sequelize model:generate --name Cart --attributes productId:integer,userId:integer,number:integer
推模: sequelize db:migrate - 创建一个 cart.js, 然后在app.js中引入这个文件
- 为调试方便,先在路由中间件中,加上不要验证cart路由地址
- 因为当前购物车表和商品表还有用户表(购物车商品属于哪个用户),所以要建立关联:
- 在 cart.js里 创建一个 post接口: 根据小程序扫到的条形码 ,来搜索Product商品表里面有没有这个 条形码对应的商品
- 如果Product表里 ,没有这个条形码的商品:
- 如果Product表里, 有这个商品: 就查询这个商品 在不在购物车Cart表中
- 如果购物车Cart表里 没有这个商品, 就在购物车添加这个商品
- 如果购物车表中 已经有这个商品存在 , 就把当前的商品数量 number增加1
- 代码:
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;
原文:https://www.cnblogs.com/cl1998/p/13170541.html