加入购物车(mongoose坑),我的前端美团求职之路

文章讲述了前端工程师如何在项目中实现购物车功能,涉及数据库操作,如使用MongoDB查询用户购物车信息并进行添加或更新。同时,分享了一份全面的Web前端开发学习资料,覆盖HTML、CSS、JavaScript等技术及面试准备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

_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前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

基础面试题

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等

-tUnLmvBS-1711027868631)]
[外链图片转存中…(img-OHyQeulw-1711027868632)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-F03OmzSe-1711027868632)]

基础面试题

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值