1.定义experience

 const  profileFields = {};
profileFields.experience=[];

  

2.查找用户id

 const profile = await Profile.find({ user: ctx.state.user.id });

3.判断用户的数据是否存在,

如果存在,就设计数据的结构,然后添进Profile 中,最后更新进去数据库里面

if(profile.length>) {
//设计experience 的结构数据
const newExp={
title: ctx.request.body.title,
current: ctx.request.body.current,
company: ctx.request.body.company,
location: ctx.request.body.location,
from: ctx.request.body.from,
to: ctx.request.body.to,
description: ctx.request.body.description
}
profileFields.experience.unshift(newExp);
//console.log(profileFields);
//在从前端添加数据后,我们更新数据到数据库
const profileUpdate = await Profile.findOneAndUpdate(
{
user:ctx.state.user.id
},
{
$set:profileFields
},
{
new:true
}
);
ctx.body=profileUpdate;

更新数据库

  const  profileUpdate =  await   Profile.findOneAndUpdate(
{
user:ctx.state.user.id
},
{
$set:profileFields
},
{
new:true
}

  数据不存在

 errors.noprofile = '没有该用户的信息';
ctx.status = 404;
ctx.body = errors

代码

/**
* @route post api/profile/experience
* @desc 工作经历接口
* @access 接口是私密的
*/
// localhost:4000/api/profile/experience
router.post('/experience', passport.authenticate('jwt', { session: false }), async ctx => {
//验证
const { errors, isValid } = validateExperienceInput(ctx.request.body);
//判断是否验证通过
if (!isValid) {
ctx.status = 400;
ctx.body = errors;
return;
}
const profileFields = {};
profileFields.experience=[];
//查找用户id是否存在
const profile = await Profile.find({ user: ctx.state.user.id });
//判断profile 的数据是否存在,存在就添加个人经历的数据
if(profile.length>0) {
//设计experience 的结构数据
const newExp={
title: ctx.request.body.title,
current: ctx.request.body.current,
company: ctx.request.body.company,
location: ctx.request.body.location,
from: ctx.request.body.from,
to: ctx.request.body.to,
description: ctx.request.body.description
}
profileFields.experience.unshift(newExp);
//console.log(profileFields);
//在从前端添加数据后,我们更新数据到数据库
const profileUpdate = await Profile.findOneAndUpdate(
{
user:ctx.state.user.id
},
{
$set:profileFields
},
{
new:true
}
);
ctx.body=profileUpdate; }else {
errors.noprofile = '没有该用户的信息';
ctx.status = 404;
ctx.body = errors;
} });

  截图

node 添加个人经历的接口的更多相关文章

  1. Node教程——API接口开发(Node版的CRUD通用接口的搭建)(MangoDB+Express_Version2)

    1. 概述 时间跨度有点大,之前就跟大家唠嗑过一些知识点,也开启了一个Node书写一个后台api项目的开始,出于各种原因,迟迟没有更新博文.现在我把这个坑填上,如果你还有阅读过我之前的文章,我建议你先 ...

  2. Android中添加监听回调接口的方法

    在Android中,我们经常会添加一些监听回调的接口供别的类来回调,比如自定义一个PopupWindow,需要让new这个PopupWindow的Activity来监听PopupWindow中的一些组 ...

  3. Spring boot 添加日志 和 生成接口文档

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  4. [译]WPF MVVM 架构 Step By Step(5)(添加actions和INotifyPropertyChanged接口)

    应用不只是包含textboxs和labels,还包含actions,如按钮和鼠标事件等.接下来我们加上一些像按钮这样的UI元素来看MVVM类怎么演变的.与之前的UI相比,这次我们加上一个"C ...

  5. Node+express实现后台服务接口

    一.准备工作 创建代码目录,依次执行以下操作 1.(若没有安装过)安装node 2.npm init(package.json) 3.安装express(请求)npm install express ...

  6. 小程序动态添加class及调接口传递多个参数

    1.动态添加class <view class="step2 {{indication == 2 ?'on':''}}"> <view class='tc lef ...

  7. Node.js中的模块接口module.exports浅析

    在写node.js代码时,我们经常需要自己写模块(module).同时还需要在模块最后写好模块接口,声明这个模块对外暴露什么内容.实际上,node.js的模块接口有多种不同写法.这里作者对此做了个简单 ...

  8. 使用navicat for mysql图形界面操作数据库、使用node.js操作数据库写接口

    1.先启动MYSQL服务 2.打开navicat for mysql, 点击链接,输入如下的内容: 3.新建数据表 4.数据库(新建一个db.js) //数据库链接配置 module.exports ...

  9. element中upload单图片转base64后添加进数组,请求接口

    //先上代码 <template> <!-- data绑定的参数 getuploadloge: [ { url: '', name: '' } ], --> <!-- 编 ...

随机推荐

  1. Flutter-ListView

    return Container( child: ListView( children: <Widget>[ Column( children: <Widget>[ Conta ...

  2. python3输出中文报错的原因,及解决办法(基于pycharm)

    通常python3里面如果有中文,在不连接其他设备和程序的情况下,报错信息大致如下: SyntaxError: Non-UTF-8 code starting with '\xd6' in file ...

  3. webpack使用的补充

    1.分离生产环境和开发环境的wepack.config.js 我们可以将生产环境和开发环境中的配置分离为两个不同的文件,并且还维护一个共同的配置文件 common,可以通过 webpack.merge ...

  4. 启动kafka集群,关闭kafka集群脚本

    启动kafka集群,关闭kafka集群脚本 在$KAFKA_HOME/bin下新建如下脚本文件 start-kafka.sh #!/bin/bash BROKERS="mini41 mini ...

  5. mysql8 主从配置方案

    先理论,后实践!在理论的基础上有指导性的实践会更快,也更容易发现错误.理论参考高性能mysql这本书,之前大概看过一遍,但实际生产中并没有怎么注意mysql性能这方面,今天用到主备,就把第十章的复制拿 ...

  6. linux0.11内核源码——boot和setup部分

    https://blog.csdn.net/KLKFL/article/details/80730131 https://www.cnblogs.com/joey-hua/p/5528228.html ...

  7. java 反射,类的加载过程以及Classloader类加载器

    首先自定义一个类Person package reflection; public class Person { private String name; public int age; public ...

  8. ini操作

    关于C#操作INI文件的总结 INI文件其实是一种具有特定结构的文本文件,它的构成分为三部分,结构如下: [Section1] key = value2 key = value2 …… [Sectio ...

  9. 【靶场训练_DVWA】Command Execution

    low 利用: ;ls ../../ 源码分析: <?php if( isset( $_POST[ 'submit' ] ) ) { //将ip对应的值复制给target $target = $ ...

  10. apr not found,APR-util not found,pcre,

    1.下载所需软件包(此下载链接经由作者验证可使用): wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz wget http://arch ...