Node编写更新用户头像接口

目录

定义路由和处理函数

验证表单数据

​编辑

实现更新用户头像的功能


定义路由和处理函数

向外共享定义的更新用户头像处理函数

// 更新用户头像的处理函数
exports.updateAvatar = (req, res) => {res.send(更新成功)
}

定义更新用户头像路由

// 更新用户头像的路由
router.post('/update/avatar', userinfo_handler.updateAvatar)

postman发起模拟请求,注意该接口也是需要token的

验证表单数据

定义头像验证规则

// dataUri() 指的是如下格式的字符串数据:
// data:image/png;base64,VE9PTUFOWVNFQ1JFVFM=
const avatar = joi.string().dataUri().required()

向外共享验证规则对象

// 验证规则对象 - 更新头像
exports.update_avatar_schema = {body: {avatar,},
}

在路由模块导入并解构该验证对象

const { update_avatar_schema } = require('../schema/user')

修改更新用户头像路由

router.post('/update/avatar', expressJoi(update_avatar_schema), userinfo_handler.updateAvatar)

实现更新用户头像的功能

定义sql语句

const sql = 'update ev_users set user_pic where id=?'

使用db.query()调用sql语句

db.query(sql,[req.body.avatar,req.auth.id],(err,results)=>{if(err) return res.send({status:1,message:err.message})if(results.affectedRow!==1) return res.send({status:1,message:'头像更新失败'})res.send({status:0,message:'更新成功'})
})

更新用户头像路由完整代码

// 导出更新头像
exports.updateAvatar=(req,res)=>{// 定义sql语句const sql = 'update ev_users set user_pic=? where id=?'db.query(sql,[req.body.avatar,req.auth.id],(err,results)=>{// 判断sql语句是否执行if(err) return res.send({status:1,message:'err.message'})// sql语句执行,判断影响行数是否为1if(results.affectedRows!==1) return res.send({status:1,message:'头像更换失败'})res.send({status:0,message:'头像更换成功'})})res.send('更新成功')
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装 tensorflow==1.15.2 遇见的问题

一、直接安装 命令:pip install tensorflow1.15.2 二、换 阿里云 镜像源 命令:pip install -i http://mirrors.aliyun.com/pypi/simple tensorflow1.15.2 三、换 豆瓣 镜像源 命令:pip install http://pypi.douban.com/simple tensorflow1…

【OpenCV实现平滑图像形态学变化】

文章目录 概要目标腐蚀膨胀开运算结构元素(内核)小结 概要 形态学变化是一组简单的图像操作,主要用于处理二值图像,即只包含黑和白两种颜色的图像。这些操作通常需要两个输入,原始图像和一个内核(kernel&a…

第13期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

接口自动化测试实战

实现思路 使用excel管理用例用例信息,requests模块发送http请求,实现了记录日志,邮件发送测试报告的功能 目录结构如下: 同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等)&#…

MySQL 连接出现 Authentication plugin ‘caching_sha2_password的处理方法(使用第二种)

出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password. 1. 升级MySQL版本 较早的MySQL版本可能不…

2023-8-20 CVTE视源股份后端开发实习一面

自我介绍 操作系统 1 有了解进程和线程的特点吗 2 在linux层面的话是怎么创建一个进程或者一个线程的(具体的系统调用的命令) 答: 3 如果是java层面讲,怎么去启动一个线程,要实现哪些方法呢 Thread类实现run()方法的…

tmux和vim

本文旨在对y总的Linux基础课做学习记录,指令较多,方便日后查找。 参考视频:Linux基础课 参考教程:Linux教程 1 tmux 1.1 功能: ㅤㅤ(1):分屏 ㅤㅤ(2)&…

L2-005 集合相似度

给定两个整数集合,它们的相似度定义为:Nc​/Nt​100%。其中Nc​是两个集合都有的不相等整数的个数,Nt​是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式: 输入第一行给出一个正整数N…

TSINGSEE青犀老旧小区升级改造AI+视频监控方案

一、背景与需求 近年来,政府高度重视城镇老旧小区改造工作,强调要加快老旧小区改造,不断完善城市管理和服务,彻底改变粗放型管理方式,让人民群众在城市生活得更方便、更舒心、更美好。老旧小区升级改造面临以下问题&a…

Kotlin中使用ViewBinding绑定控件并添加点击事件

文章目录 效果1、加入依赖2、与控件进行绑定在 Activity 中使用视图绑定 3、监听控件 效果 实现源码 class MainActivity : AppCompatActivity() {lateinit var binding:ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstan…

计算机毕业设计 基于SpringBoot大学生创新创业项目管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

【安装tensorflow-CPU版本】

一、安装目的二、安装过程三、总结 一、安装目的 使自己的jupyter能用tensorflow 二、安装过程 首先打开anaconda prompt 接着输入conda list 查看自己是否安装了tensorflow 在 Python 中使用 pip 工具来升级 pip 自身并指定了使用清华大学的镜像源进行安装 python -m pip …

DoLa:对比层解码提高大型语言模型的事实性

DoLa:对比层解码提高大型语言模型的事实性 摘要1 引言2 方法2.1 事实知识在不同层级上演化2.2 动态早期层选择2.3 预测对比 3 实验3.1 任务3.2 实验设置3.3 多项选择3.3.1 TruthfulQA:多项选择3.3.2 FACTOR:维基、新闻 3.4 开放式文本生成3.4…

开始学习Go编程

探索Go编程中的语法、数据类型和控制流 Go,又称为Golang,因其简单性、性能和效率而广受欢迎。在本文中,我们将深入研究构成Go编程语言基础的基本概念。从理解其语法和数据类型到掌握控制流和函数,我们将为您提供启动Go编程之旅所…

利用JMeter生成加密数据写入数据库

有部分数据直接插入数据库是不可以的,需要加密处理,例如密码都指定为加密后的数据字符串。今天我们来学习一下如何利用JMeter生成加密数据并写入MySQL数据库中。如何JMeter如何连接数据库,可以看我之前写的随笔,JMeter接口测试-JD…

使用Ubuntu虚拟机离线部署RKE2高可用集群

环境说明 宿主机和虚拟机的OS与内核相同,如下 $ cat /etc/issue Ubuntu 22.04.3 LTS \n \l$ uname -sr Linux 6.2.0-34-generic虚拟化软件版本 $ kvm --version QEMU emulator version 6.2.0 (Debian 1:6.2dfsg-2ubuntu6.14) Copyright (c) 2003-2021 Fabrice Be…

Linux之线程池

线程池 线程池概念线程池的应用场景线程池实现原理单例模式下线程池实现STL、智能指针和线程安全其他常见的各种锁 线程池概念 线程池:一种线程使用模式。 线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待…

基于机器视觉的手势检测和识别算法 计算机竞赛

0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的手势检测与识别算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng…

【代码随想录】算法训练计划03

1、203. 移除链表元素 题目: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 思路&#xf…

linux进程间通信

文章目录 前言一、管道通信1、进程间通信目的2、进程间通信分类3、匿名管道通信3.1 匿名管道通信介绍3.2 匿名管道通信3.3 匿名管道读写规则3.4 匿名管道特点3.5 站在文件描述符角度-深度理解管道3.6 站在内核角度-管道本质 4、进程池练习5、命名管道6、匿名管道与命名管道的区…