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. 为什么我们从Angular 2迁移到Vue.js(为什么我们没有选择React)

    在Rever(www.reverscore.com),我们刚刚使用Vue.js发布了我们的Web客户端的新版本.经过641次提交和16周的紧张开发,我们非常自豪之前做出的决定.8个月前,我们的前端在使 ...

  2. JavaScript-黑科技

    单行写一个评级 var rate = 3; "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate); 随机字符串 Math.random().toStrin ...

  3. QT--控件屏蔽鼠标点击事件

    源博客:https://blog.csdn.net/qiufenpeng/article/details/81745266 最近学习QT写一个小界面想屏蔽鼠标点击,原来只要一个函数就搞定了. ui-& ...

  4. intellij IDEA启动springboot项目报无效的源发行版错误解决方法

    从http://start.spring.io/ 上下载的springboot 模板项目,导入intellij 后,报如下错误,原因是intellij 默认使用的Java compiler 是1.8版 ...

  5. 趣头条基于 Flink 的实时平台建设实践

    本文由趣头条实时平台负责人席建刚分享趣头条实时平台的建设,整理者叶里君.文章将从平台的架构.Flink 现状,Flink 应用以及未来计划四部分分享. 一.平台架构 1.Flink 应用时间线 首先是 ...

  6. manjaro linux java环境配置

    大佬博客 yaourt jdk 不管怎么装就是会出错 #报错信息 Error: dl failure on line 597 Error: failed /usr/lib/jvm/java-12-op ...

  7. AcWing 313. 花店橱窗 (线性DP)打卡

    题目:https://www.acwing.com/problem/content/315/ 题意:有一个矩阵,你需要在每一行选择一个数,必须保证前一行的数的下标选择在下一行的左边,即下标有单调性,然 ...

  8. Ubuntu 14.04修复grub

    1.进livecd 2.sudo fdisk -l 找到安装分区 3.sudo mount /dev/sda? /mnt 挂载安装分区 4.sudo mount --bind /dev /mnt/de ...

  9. Linux awk 命令 说明

    一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是l ...

  10. Oracle 11g 的卸载

    Oracle 11g 的卸载 停止 oracle 相关的所有服务. 使用 Oracle 自带的 Universal Installer 卸载工具卸载 Oracle. 删除注册表 HKEY/LOCAL_ ...