默认 环境 使用了 cookie-parser; 并且使用了它;
const cookieParser=require("cookie-parser");
app.use(cookieParser());
然后 就在登陆成功之后 ,利用 res.cookie()方法去存储cookie;
//注册登陆post 方法; Router.post("/login",function (req,res) { const {user,psw}=req.body; // 把你不想输出到页面的值,在第二个入参设置为0 User.findOne({user:user,psw:psw},_filter,function (e,d) { if(!d){ return res.json({code:1,msg:"user/psw error"}) } //用来设置cookie到浏览器 res.cookie("userid",d._id)
return res.json({code:0,data:d}) }) })
登陆一波 ;点开响应头;
然后就可以在浏览器的Application--->cookies 找到存储的字段了;
那么 在那个获取用户信息获取接口;首先要判断用户是否已经登陆;标识为存储的 cookie 字段 是否有效;
注意: 写cookie是在 res 里写 ;
//用来设置cookie到浏览器 res.cookie("userid",d._id)
读取cookie是咋 req里读取的!
//读取用户 的cookies; const {userid}=req.cookies;
Router.get("/info",function (req,res) { //读取用户 的cookies; const {userid}=req.cookies; //如果没有用户的cookie字段,那么输出错误码 if(!userid){ return res.json({code:1}) } //如果有用户的cookie字段,那么输出出来 User.findOne({_id:userid},_filter,function (e,d) { if(e){ return res.json({code:1,msg:"后端出错了"}) } return res.json({code:0,data:d}) }) })
由于在组册的时候使用create方法并不能生成id,所以 这边生成id的方法就是使用 save方法去生成 并且把id存储到cookie里;
修改post方法
//注册post方法 Router.post("/register",function (req,res) { //有了body-parser就可以拿到post的参数,解构出来; const {user,psw,type}=req.body; //先查询 用户名是否存在 User.findOne({user},function (err,doc) { if(doc){ return res.json({code:1,msg:"用户名字重复"}) } //使用save方法使得id生成,并且把id存储进去cookie; const userModle=new User({user,psw,type}); userModle.save(function (e,d) { if(e){ return res.json({code:"1",msg:"后端出错了"}) } //拿出来我们所需要存储的 const {user,_id,type}=d; //注册成功以后直接存储id到cookie res.cookie("userid",_id); return res.json({code:0,data:{user,_id,type}}) }) //把用户的字段存进mongodb // User.create({user,psw,type},function (e,d) { // if(e){ // return res.json({code:1,msg:"后段报错,老铁激动吗?"}) // } // return res.json({code:0}) // }) }) })
来一个代码段 ,知识点都下载注释里了;
//更新 update post方法 Router.post("/update",function (req,res) { //从req里,可以自行去打印req,你会发现它包含body(就是我们post的参数)和cookie,拿到 cookie里的参数并且解构出来; const userid=req.cookies.userid; //如果id不存在 直接返回 粗错码 code:1 if(!userid){ // 等我明天去问下 ;) return json.dumps({code:1}); } const body=req.body; //使用 寻找 id并且 更新的方法去 组织 返回的数据 User.findByIdAndUpdate(userid,body,function (e,d) { //在node里没有扩展运算符,所以只能Object.assign来合并对象了; const data=Object.assign({},{ user:d.user, type:d.type },body) return res.json({code:0,data}) }) });
这里着重说下 object.assign()
var obj=object.assign({},a,b); //a,b合并为1个对象,冲突,b覆盖a
不出一个知识点 express的查询
//获取聊天列表 Router.get("/getmsglist",function (req,res) { const user=req.cookies.user; // 使用$or 来过滤符合自己想要条件的 Chat.find({"$or":[{from:user,to:user}]},function (e,d) { if(!e){ return res.json({code:0,msgs:d} ) } }) })可以使用来 "$or" 匹配自己想要