express 使用 cookie

默认 环境 使用了 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})
    })

})

登陆一波 ;点开响应头;

  1. connection:
    close
  2. content-length:
    86
  3. content-type:
    application/json; charset=utf-8
  4. date:
    Sun, 24 Jun 2018 08:50:16 GMT
  5. etag:
    W/"56-3k59tLvHKm79xA0b9czuRjgOARk"
  6. set-cookie:
    userid=j%3A%225b2e532c8f30a30a6cd580be%22; Path=/
  7. Vary:
    Accept-Encoding
  8. x-powered-by:
    Express

然后就可以在浏览器的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"  匹配自己想要


 

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值