本文為大家分享了node和vue商城用戶地址模塊的實現,供大家參考,具體內容如下
server/models/user.js
var mongoose = require('mongoose')var userSchema = mongoose.Schema({ "userId":String, // 用戶Id "userName":String, // 用戶名 "userPwd":String, // 用戶密碼 "orderList":Array, // 訂單列表 "cartList":[ // 購物車列表 { "productId": String, // 商品Id "productName": String, // 商品名稱 "salePrice":String, // 商品價格 "productImage":String, // 圖片地址 "checked":String, // 是否選中 "productNum":String // 商品數量 } ], "addressList":[ // 用戶地址列表 { "addressId": String, "userName": String, "streetName": String, "postCode": Number, "tel": Number, "isDefault": Boolean } ]}); // 通過module.exports進行輸出,這樣才能加載到 三個參數分別是 模型名,userSchema名,管理數據庫集合名module.exports = mongoose.model("User",userSchema,"users");server/routes/users.js
var express = require('express');var router = express.Router(); var User = require('./../models/user'); /* GET users listing. */router.get('/', function(req, res, next) { res.send('respond with a resource');}); router.get('/test', function(req, res, next) { res.send('test');}); // 登錄router.post('/login', function(req, res, next) { // 獲取前端傳過來的參數 post方式用req.Body形式獲取參數 var param = { userName:req.body.userName, userPwd:req.body.userPwd } User.findOne(param, function(err,doc) { if(err){ res.json({ status:"1", msg:err.message }); }else{ if(doc){ res.cookie("userId",doc.userId,{ // 將用戶信息存入cookie path:'/', maxAge: 1000*60*60 }); res.cookie("userName",doc.userName, { path:'/', maxAge: 1000*60*60 }); // req.session.user = doc; // 將用戶信息存入session res.json({ status:'0', msg:'', result:{ userName:doc.userName } }) } } });}); // 登出接口router.post("/logout", function (req,res,next) { res.cookie("userId", "", { // 登出將userId設置為"" path:"/", maxAge:-1 // 設置位過期 }) res.json({ status:"0", msg:'', result:'' })}) // 校驗用戶信息router.get("/checkLogin", function (req,res,next) { if(req.cookies.userId){ res.json({ status:'0', msg:'', result: req.cookies.userName || '' // 獲取cookeie req.cookies.屬性 }); }else{ // 取不到就說明當前沒有登錄 res.json({ status:'1', msg:'未登錄', result:'' }); }}) // 查詢當前用戶的購物車數據router.get("/cartList", function (req,res,next) { var userId = req.cookies.userId; console.log(userId); User.findOne({userId:userId}, function (err,doc) { if(err){ res.json({ status:'1', msg:err.message, result:'' }); }else{ if(doc){ res.json({ status:'0', msg:'', result:doc.cartList }); } } });}); // 購物車刪除router.post("/cartDel", function (req,res,next) { // 獲取瀏覽器的cookie 以及用戶傳遞過來的參數 productId var userId = req.cookies.userId,productId = req.body.productId; User.update({ userId:userId },{ $pull:{ 'cartList':{ 'productId':productId } } }, function (err,doc) { if(err){ res.json({ status:'1', msg:err.message, result:'' }); }else{ res.json({ status:'0', msg:'', result:'suc' }); } });}); //修改購物車商品數量router.post("/cartEdit", function (req,res,next) { var userId = req.cookies.userId, // 獲取用戶客戶端的userId productId = req.body.productId, // 獲取用戶傳的參數商品id productNum = req.body.productNum, // 獲取用戶傳的參數商品id checked = req.body.checked; // 獲取用戶傳的參數是否選中 User.update({ "userId":userId, "cartList.productId":productId},{ "cartList.$.productNum":productNum, "cartList.$.checked":checked, }, function (err,doc) { if(err){ res.json({ status:'1', msg:err.message, result:'' }); }else{ res.json({ status:'0', msg:'', result:'suc' }); } })}); // 商品全選不選router.post("/editCheckAll", function (req,res,next) { var userId = req.cookies.userId, checkAll = req.body.checkAll?'1':'0'; User.findOne({userId:userId}, function (err,user) { if(err){ res.json({ status:'1', msg:err.message, result:'' }); }else{ if(user){ user.cartList.forEach((item)=>{ item.checked = checkAll; }) user.save(function (err1,doc) { if(err1){ res.json({ status:'1', msg:err1,message, result:'' }); }else{ res.json({ status:'0', msg:'', result:'suc' }); } }) } } });}); // 用戶地址模塊開始-----------------------------------------------------------------------------------------------// 查詢用戶地址接口router.get("/addressList", function (req,res,next) { var userId = req.cookies.userId; User.findOne({userId:userId}, function (err,doc) { if(err){ res.json({ status:'1', msg:err.message, result:'' }); }else{ res.json({ status:'0', msg:'', result:doc.addressList }); } })}); // 設置默認地址router.post("/setDefault", function (req,res,next) { var userId = req.cookies.userId, addressId = req.body.addressId; if(!addressId){ res.json({ status:'1003', msg:'addressId is null', result:'' }); }else{ User.findOne({userId:userId}, function (err,doc) { if(err){ res.json({ status:'1', msg:err.message, result:'' }); }else{ var addressList = doc.addressList; addressList.forEach((item)=>{ if(item.addressId == addressId){ item.isDefault = true; }else{ item.isDefault = false; } }); doc.save(function (err1,doc1) { if(err){ res.json({ status:'1', msg:err.message, result:'' }); }else{ res.json({ status:'0', msg:'', result:'' }); } }) } }); }}); // 刪除地址接口 router.post("/delAddress", function (req,res,next) { var userId = req.cookies.userId,addressId = req.body.addressId; User.update({ userId:userId },{ $pull:{ // 刪除子文檔元素 'addressList':{ 'addressId':addressId } } }, function (err,doc) { if(err){ res.json({ status:'1', msg:err.message, result:'' }); }else{ res.json({ status:'0', msg:'', result:'' }); } });});// 用戶地址模塊開始----------------------------------------------------------------------------------------------- module.exports = router;
新聞熱點
疑難解答
圖片精選