node.js搭建接口(十一):Node-获取和存入当前登录用户的个人信息

上一节我们搭建了一个稍微复杂的数据库模型profiles,里面描述了用户的工作技能、工作经历、教育经历等,此节搭建接口来获取当前登录用户的这些个人信息。

创建一个profile.js在api文件夹里面,因为很多内容与user都是相似的,这里就不重复说明了。

需要注意的几点是:

1.profile是关联着user的,需要根据user的id来查找profile

Profile.findOne({user:req.user.id})

同时我们还需要查询到user表里面的name和头像,使用mongoose的populate

Profile.findOne({user:req.user.id})
       .populate('user',["name","avatart"])           //通过.populate方法获取关联表的数据

2.查询登录用户的信息需要有登录的token,使用postman进行测试时需要在header里面填入Authorization和登录时产生的token。

 

接下来搭建一个创建和编辑个人信息的接口。

需要注意的内容有:

1.创建空对象来装返回值时,需要先判断返回值是不是为空;

2.skills在json中是一个数组,需要进行数组转换

if(typeof req.body.skills !== "undefined"){
    	profileFields.skills = req.body.skills.split(",");
    }

3.如果用户信息是存在的,做一个更新

Profile.findOne({user:req.user.id}).then(profile => {
    	if(profile){
            //用户信息存在,执行更新方法
            //根据user的id,写入数据库profileFields
            Profile.findOneAndUpdate({user:req.user.id},{$set:profileFields},{new:true})
               .then(profile => res.json(profile));

如果不存在通过handle来判断,

        Profile.findOne({handle:profileFields.handle})
           .then(profile => {
           	if(profile){errors.handle = "该用户的handle个人信息已经存在,请勿重新创建!";
           	res.json(errors);
           }
           //如果没有这个用户,新建一个用户,存入数据库.save()
           new Profile(profileFields).save().then(profile => res.json(profile));
           })
    	}

 

你可能感兴趣的:(node.js)