Express + MongoDB 实现更新用户时用户名变化验证数据库是否存在,不变不验证

server/2025/2/27 5:21:43/

`User.findById()`:方法根据用户 ID 查找当前用户的信息,若用户不存在则返回 404 错误。

`User.findOne()`:方法检查新用户名是否已存在于数据库中。

`User.findByIdAndUpdate()`:方法更新用户信息,`new: true` 表示返回更新后的文档,`runValidators: true` 表示运行模型的验证器。

// 处理用户信息更新的路由app.put("/users/:id", async (req, res) => {try {const userId = req.params.id;const updateData = req.body;// 验证是否为有效的 ObjectIdif (!mongoose.Types.ObjectId.isValid(userId)) {return res.status(400).json({ message: "Invalid user ID" });}// 根据用户 ID 查找当前用户信息const currentUser = await User.findById(userId);if (!currentUser) {return res.status(404).json({ message: "User not found" });}// 检查用户名是否发生变化if (updateData.username && updateData.username !== currentUser.username) {// 验证新用户名是否已存在const existingUser = await User.findOne({username: updateData.username,});if (existingUser) {return res.status(409).json({ message: "Username already exists" });}}// 更新用户信息const updatedUser = await User.findByIdAndUpdate(userId, updateData, {new: true,runValidators: true,});res.json({ message: "User updated successfully", user: updatedUser });} catch (error) {console.error("Error updating user:", error);res.status(500).json({ error: "Internal Server Error" });}});


http://www.ppmy.cn/server/170942.html

相关文章

安卓好软-----车机端 安卓tv端很好用的应用管家 adb 授权等等功能

应用管家是一款完全免费且实用的安卓平台系统管理工具,专为管理电视、车机的应用及文件而设计。其支持提取/卸载禁用自带应用、传送安装、清理及本地文件查找编辑压缩等等功能。 众所周知,当前市面上大多数厂家智能电视系统均基于谷歌原生安卓进行了“深…

Deep Searcher成为企业级RAG最新范式教程参考

教程参考 普通人想要分析一家公司,可以收集到的数据信息一般可以分为3类:公司财报、第三方机构的研报或者专业财经自媒体的分析博客、和公司以及行业相关的新闻。过去,要想在企业级场景用好这些数据,我们必须先对这些材料进行复杂的处理流程。 但是Deep Searcher,基于向…

服务器独立IP对于网站的作用

服务器作为重要的网络设备,可以帮助企业和用户建立网站,而独立UO地址作为服务器中的一个重要元素,可以在很大程度上决定着网站建设的性能和安全性,下面小编就来从几个方面阐述一下服务器独立IP对于网站的作用。 有着独立IP地址的服…

DeepSeek等LLM对网络安全行业的影响

大家好,我是AI拉呱,一个专注于人工智领域与网络安全方面的博主,现任资深算法研究员一职,兼职硕士研究生导师;热爱机器学习和深度学习算法应用,深耕大语言模型微调、量化、私域部署。曾获多次获得AI竞赛大奖,拥有多项发明专利和学术论文。对于AI算法有自己独特见解和经验…

禾迈电力电子嵌入式面经和参考答案

CMakeLists 怎么写? CMakeLists.txt 是 CMake 构建系统的配置文件,用于描述项目的构建规则和依赖关系。以下是一个简单的 CMakeLists.txt 示例及基本写法说明。 首先,指定 CMake 的最低版本要求,例如cmake_minimum_required(VERSION 3.10)。 然后,定义项目名称,如project…

ESP32 websocket-client

本文简介 ESP-IDF WebSocket-Client 实验平台 ①ESP-IDF 版本:release/v5.3.2 ③硬件平台:esp32-s3 版权声明 ①作者:coLin ②声明:问题总结,有误解,请联系纠正。 正文 1、基于 esp-idf 如何使用 …

深度学习-6.用于计算机视觉的深度学习

Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…

node.js的常用指令

1. 基本指令 查看 Node.js 版本 node -v加粗样式该指令会输出当前系统中安装的 Node.js 版本号,有助于确认你使用的 Node.js 版本是否符合项目需求。 查看 npm 版本 npm -vnpm(Node Package Manager)是 Node.js 的包管理工具,…