_id
createDate
cardList 购物车列表
addresslist 地址
0
addressId
username
streetName
posCode
tel
isDefault
数据库字段
{
“userId”: 1,
“username”: 1,
“password”: 1,
“orderList”: [
{
“orderId”: 1,
“orderTotal”: 1,
“orderStatus”: 1,
“_id”: 1,
“createDate”: 1
}
],
“cartList”: [{
“userId”: 1,
“productId”: 1,
“productName”: 1,
“salePrice”: 1,
“productImage”: 1,
“checked”: 1,
“productNum”: 1
}],
“addressList”: []
}
var userSchma = new mongoose.Schema({
“userId”: String,
“username”: String,
“password”: String,
“orderList”: [{
“orderId”: String,
“orderTotal”: String,
“orderStatus”: String,
“_id”: String,
“createDate”: String
}],
“cartList”: [{
“userId”: String,
“productId”: String,
“productName”: String,
“salePrice”: String,
“productImage”: String,
“checked”: String,
“productNum”: String
}],
“addressList”: Array
})
router.post(‘/api/goods/addCart’, function (req, res, next) {
// 没有判断当前购物车有没有数据
// 因为我们要把商品添加到当前用户名下,所以需要一个用户Id
// 往用户 的名下去插购物车信息,判断,如果用户名下已经有了,只需要更新一下数量
// get取参数: req.params post取参req.body.productId
var userId = ‘1’;
// ProductId = req.body.productId;
// 拿到用户信息,返回了userDoc
var productId = req.body.productId;
console.log(req.body.productId)
db.User.findOne({
userId: userId
}, function (err, userDoc) {
if (err) {
res.json({
status: “1”,
msg: ‘User表访问数据出错’ + err.message
});
} else {
// console.log(“User表的查询结果” + userDoc)
if (userDoc) {
// 根据productId去匹配商品信息 // goods表的id:传过来的前台id
let goodsItem = ‘’;
// 遍历用户购物车,判断加入购物车的商品是否已经存在
userDoc.cartList.forEach(function (item) {
// console.log(“遍历” + item)
if (item.productId == productId) {
goodsItem = item;
item.productNum++; // 购物车这件商品数量+1
}
console.log(“商品数量:” + item.productNum)
})
if (goodsItem) { // 若购物车商品已存在
userDoc.save(function (err2, doc2) {
if (err2) {
res.json({
status: “1”,
msg: err2.message
})
} else {
res.json({
status: ‘200’,
msg: ‘’,
result: doc2
})
}
})
// 若购物车不存在就添加进去
} else {
db.Goods.findOne({
id: productId
}, function (err1, doc) {
// console.log(“Goods表的查询结果” + doc)
if (err1) {
res.json({
status: “1”,
msg: ‘查找Good表数据出错’ + err1.message
});
} else {
// 匹配到以后,
if (doc) {
// 加一个数量
doc.productNum = 1;
doc.checked = 1;
// 需要把这个商品信息doc添加到User表的cartList里面,最后save到数据库
// 因为要在查出来的用户信息里面push数据,所以是userDoc
userDoc.cartList.push(doc);
userDoc.save(function (err2, doc2) {
console.log(“保存结果” + doc2)
if (err2) {
res.json({
status: “1”,
msg: err2.message
})
} else {
res.json({
status: ‘200’,
result: doc2
})
}
})
}
}
})
}
}
}
})
})
前台
点加入购物车@click=“addCart”
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
基础面试题
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等
-tUnLmvBS-1711027868631)]
[外链图片转存中…(img-OHyQeulw-1711027868632)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-F03OmzSe-1711027868632)]
基础面试题
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等