Node编写更新用户信息接口

news2024/9/28 13:18:17

目录

前言

定义路由和处理函数

验证表单数据

实现更新用户基本信息的功能


前言

继前面几篇文章,本文介绍如何编写更新用户信息接口

定义路由和处理函数

路由

// 更新用户信息接口
router.post('/userinfo', userinfo_handler.updateUserinfo)

处理函数

// 导出更新用户信息处理函数
exports.updateUserinfo = (req,res)=>{
    res.send('更新成功')
}

使用postman模拟发起post请求

验证表单数据

定义id,nickname,email验证规则

// 定义 id, nickname, emial 的验证规则
const id = joi.number().integer().min(1).required()
const nickname = joi.string().required()
const email = joi.string().email().required()

向外导出更新的用户信息

// 验证规则对象 - 更新用户基本信息
exports.update_userinfo_schema = {
  body: {
    id,
    nickname,
    email,
  },
}

导入验证数据合法性的中间件

// 导入验证数据合法性的中间件
const expressJoi = require('@escook/express-joi')

导入需要验证的对象

// 导入需要的验证规则对象
const { update_userinfo_schema } = require('../schema/user')

在更新用户信息的接口中,添加验证

// 更新用户信息接口
router.post('/userinfo',expressJoi(update_userinfo_schema), userinfo_handler.updateUserinfo)

使用postman模拟请求验证

实现更新用户基本信息的功能

定义sql语句

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

调用 db.query() 执行 SQL 语句

db.query(sql,[req.body,req.body.id],(err,results)=>{
        // 判断sql语句是否执行成功
        if(err) return res.send({status:1,message:err.message})
        // 判断影响行数是否为1
        if(results.affectedRows!==1) return res.send({status:1,message:'用户信息更新失败'})
        res.send({
            status:0,
            message:'用户更新成功'
        })
    })

更新用户完整处理函数

// 导出更新用户信息处理函数
exports.updateUserinfo = (req,res)=>{
    const sql = 'update ev_users set ? where id=?'
    db.query(sql,[req.body,req.body.id],(err,results)=>{
        // 判断sql语句是否执行成功
        if(err) return res.send({status:1,message:err.message})
        // 判断影响行数是否为1
        if(results.affectedRows!==1) return res.send({status:1,message:'用户信息更新失败'})
        res.send({
            status:0,
            message:'用户更新成功'
        })
    })
}

使用postman模拟请求

从数据库中查看

修改成功

当修改不存在用户时

返回修改失败

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

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

相关文章

Netty实战-实现自己的通讯框架

通信框架功能设计 功能描述 通信框架承载了业务内部各模块之间的消息交互和服务调用,它的主要功能如下: 基于 Netty 的 NIO 通信框架,提供高性能的异步通信能力;提供消息的编解码框架,可以实现 POJO 的序列化和反序…

Kmeans算法实现目标客户聚类分析

文章目录 一、Kmeans简介二、数据集描述三、实现方法一、Kmeans简介 Kmeans是聚类算法中较为简单的一种,简单但实用,有如下优势和缺点: 优势 算法简单,便于使用(算法仅需要考虑一个分类数量K即可) 适合常规数据集(最好是线性可分的数据集) 适合 不适合 缺点 K值难以确…

【COMP329 LEC4 Locomotion and Kinematics】

Only for the Test 1 which include 4.2 4.3 4.4 Locomotion and Kinematics 运动和运动学 (4.2) Part 2: Wheeled Motion 1. Wheeled Robots a. 省略控制双腿需要的计算复杂度 b. 只限于easy terrain (地形) c. 不平坦uneven 不规则irregular 的地形需要…

STM32-程序占用内存大小计算

STM32中程序占用内存容量 Keil MDK下Code, RO-data,RW-data,ZI-data这几个段: Code存储程序代码。 RO-data存储const常量和指令。 RW-data存储初始化值不为0的全局变量。 ZI-data存储未初始化的全局变量或初始化值为0的全局变量。 占用的FlashCode RO Data RW Data; 运行消…

Go语言用Resty库编写的音频爬虫代码

以下是一个使用Resty库的Go语言下载器程序,用于从facebook下载音频。此程序使用了duoip/get_proxy的代码。 package mainimport ("fmt""github.com/john-nguyen09/resty""io/ioutil""net/http" )func main() {// 设置爬虫i…

互联网金融 个人身份识别技术要求

文章目录 术语缩略语个人身份识别技术框架框架与各组部分的作用个人身份识别实现的主要功能 个人身份识别凭据技术要求概述记忆凭据类静态口令生成要求使用要求设备要求及安全要求 预设问题回答生成要求使用要求 OPT令牌生成要求使用要求安全要求 数字证书无硬介质证书生成要求…

kvm webvirtcloud 如何添加直通物理机的 USB 启动U盘

第一步:查看USB设备ID 在物理机上输入 lsusb 命令 rootubuntu:/media/usb1# lsusb Bus 002 Device 002: ID 0781:5581 SanDisk Corp. Ultra Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 0424:2514 Microchip Technolo…

【力扣】x (-x) 与 x (x - 1)

最近刷了很多位运算的题,从一开始的死记硬背x & (-x) 与 x & (x - 1)的含义,到现在彻底弄懂,花了很多时间理解。 前提知识: 内存中的计算都是按照补码进行计算的。正数的原反补相同,负数的补码等于原码取反加…

FOC系列(一)----DRV8301芯片的学习

一、 写在前面 从今年四五月份一直就想玩个无刷直流电机(BLDC),但是碍于一直没时间。其实很早就做出来了测试板的控制板,可以当做开发板使用,考虑到成本问题,最后选用STM32F103CBT6芯片,下面是很…

边缘计算发生了什么?

边缘计算(Edge computing)成为一种革命性工具,可以满足日益增长的实时数据处理需求。通过在网络边缘(更靠近数据生成位置)进行数据处理,边缘计算可显着减少延迟和带宽使用。 这是我们多年来一直被告知的故事,但随着生…

听GPT 讲Rust源代码--library/std(2)

File: rust/library/std/src/sys_common/wtf8.rs 在Rust源代码中,rust/library/std/src/sys_common/wtf8.rs这个文件的作用是实现了UTF-8编码和宽字符编码之间的转换,以及提供了一些处理和操作UTF-8编码的工具函数。 下面对这几个结构体进行一一介绍&…

封装一个vue3 Toast组件,支持组件和api调用

先来看一段代码 components/toast/index.vue <template><div v-if"isShow" class"toast">{{msg}}</div> </template><script setup> import { ref, watch } from vue const props defineProps({show: {type: Boolean,def…

“/usr/bin/env: ‘python’: No such file or directory“:Linux中python口令无效,python3有效

文章目录 1. 问题的发现2. /usr/bin 目录里跟python有关的链接2.1 使用ll查看文件的链接2.2 分析python口令不能使用的原因 3 参考文章《linux 升级默认python 环境为python3》4 修改命令为python 1. 问题的发现 我在安装scons时&#xff0c;发现python口令不能直接用&#xf…

Unity之ShaderGraph如何实现水波纹效果

前言 今天我们来实现一个水波纹的效果 如下图所示: 主要节点 Normalize :返回输入 In 的标准化值。输出矢量与输入 In 具有相同的方向,但长度为 1。 Length:返回输入 In 的长度。这也称为大小 (magnitude)。矢量的长度是使用毕达哥拉斯定理 (Pythagorean Theorum) 计算…

javaEE -7(网络原理初识 --- 7000字)

一&#xff1a;网络初识 计算机的独立模式是指多台计算机在网络中相互独立运行&#xff0c;彼此之间不共享资源或信息。在早期&#xff0c;计算机主要采用独立模式&#xff0c;每台计算机都拥有自己的操作系统、应用程序和数据&#xff0c;它们之间没有直接的连接或通信。 在…

笔记/日记应用 memos

memos &#xff0c;一款很惊艳的笔记应用&#xff0c;UI很漂亮&#xff0c;交互体验也很好&#xff0c;还有其他的小伙伴基于memos开发了不同平台的客户端。 图源-Gihub页 可以说这个是私人笔记系统的天花板&#xff0c;推荐给大家。

从 Python 程序中运行 PowerShell 脚本

Windows PowerShell 由数十个内置 cmdlet 组成&#xff0c;它们提供了丰富的功能集。 其中一些功能是独一无二的&#xff0c;只能通过 PowerShell 获得&#xff1b; 因此&#xff0c;如果我们能够在 Python 等其他编程语言中使用 PowerShell 脚本&#xff0c;那将非常有用。 本…

【分布式】: 幂等性和实现方式

【分布式】: 幂等性和实现方式 幂等&#xff08;idempotent、idempotence&#xff09;是一个数学与计算机学概念&#xff0c; 常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数&#xff0c;或幂等方法&#xff0c;是…

图像处理中底层、高层特征、上下文信息理解

1.图像的语义信息: 图像的语义分为视觉层、对象层和概念层。 视觉层即通常所理解的底层&#xff0c;即颜色、纹理和形状等等&#xff0c;这些特征都被称为底层特征语义&#xff1b; 对象层即中间层&#xff0c;通常包含了属性特征等&#xff0c;就是某一对象在某一时刻的状态&a…

PHP MySQL 交互 笔记/练习

PHP 与 MySQL 交互 交互函数 函数名作用mysqli_connect()与MySQL 数据库建立连接。mysqli_close()关闭与MYSQL 数据库建立的连接。mysqli_connect_errno()与MySQL 数据库建立连接时&#xff0c;发生错误时的错误编号。mysqli_connect_error()与MySQL 数据库建立连接时&#x…