react后端开发:如何根据特定ID创建新的用户信息?

以音乐app开发为例,我们想要在想要创建新的唱片库,就需要使用Post连接服务器端新建唱片ID,并在该ID处插入唱片信息。怎么做呢?

使用create同时创建id和唱片信息

existingAlbum = await Album.create({ _id: albumId, ...albumData });

不过在这之前,我们一般先需要进行判断,新写入的唱片是否存在,比如某用户已经上传了周杰伦的青花瓷,而另一名用户又再次上传了同一首歌,我们就不会让该用户上传这首歌,并在他的页面进行报错。这里为了简单我们用的是ID进行判断(实际上需要判断,歌手名和歌曲名,用find)

const express = require('express');
const router = express.Router();
const Album = require("./../models/album.model");// POST /albums/:albumId/add
router.post("/albums/:albumId/add", async (req, res) => {const { albumId } = req.params;const albumData = req.body;try {// Try to find the album by IDlet existingAlbum = await Album.findById(albumId);if (!existingAlbum) {// If album not found, you may choose to create a new oneexistingAlbum = await Album.create({ _id: albumId, ...albumData });} else {// If album found, update its dataexistingAlbum.set(albumData);await existingAlbum.save();}res.status(201).json({ message: "Album added/updated", existingAlbum });} catch (error) {console.error(error);res.status(500).json({ error: "Internal Server Error" });}
});

注意这里完整代码,一是唱片的模型数据结构

// CREATE MODEL: Album
const { Schema, model } = require("mongoose");const albumSchema = new Schema({performer: { type: String }, title: { type: String },cost: { type: Number }
});const Album = model("Album", albumSchema);
// REMEMBER TO EXPORT YOUR MODEL:
module.exports = Album;

二是最新更改版代码

const express = require('express');
const router = express.Router();
const Album = require("./../models/album.model");// POST /albums
router.post("/albums", async (req, res) => {const { singerName, songName, cost } = req.body;try {// Check if an album with the same singer name and song name already existsconst existingAlbum = await Album.findOne({ singerName, songName });if (existingAlbum) {// If an album with the same singer name and song name exists, return an error responsereturn res.status(400).json({ error: "Album with the same singer name and song name already exists" });}// If no existing album is found, create a new albumconst newAlbum = await Album.create({ singerName, songName, cost });res.status(201).json({ message: "Album created successfully", album: newAlbum });} catch (error) {console.error(error);res.status(500).json({ error: "Internal Server Error" });}
});module.exports = router;

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

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

相关文章

Django入门,十分钟学会登录网页

我们假定你已经阅读了 安装 Django。你能知道 Django 已被安装,且安装的是哪个版本,通过在命令提示行输入命令 cmd黑窗口运行,不懂cmd百度一下 python -m django --version 如果没出现版本,就是没安装,那么用pip安装…

《WebKit 技术内幕》学习之十(2): 插件与JavaScript扩展

2 Chromium PPAPI插件 2.1 原理 插件其实是一种统称,表示一些动态库,这些动态库根据定义的一些标准接口可以跟浏览器进行交互,至于这个标准接口是什么都可以,重要的是大家都遵循它们,NPAPI接口标准只是其中的一种&a…

C语言第六弹---分支语句(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 分支语句 1、 逻辑操作符:&& , || , !4.1、 逻辑取反运算符 !4.2、 与运算符4.3、 或运算符4.4、 练习:闰…

vue3.0规范学习记录

组合式函数使用usename进行命名,例如useMouse; 自定义指令使用v name进行命名,例如vFocus; 在组件使用v-model实现“双向绑定”时,子组件默认通过emits(‘update:modelValue’, params)触发更新; setup…

灵眸边缘计算产品学习

EASY EAI灵眸科技 | 让边缘AI落地更简单 (easy-eai.com) 产品简介 支持4路1080P30fps视频流采集,四核CPU1.5GHz与2Tops AI边缘算力能力。集成有以太网、Wi-Fi、4G等网络通信外设;RS232、RS485、UART等本地通信接口。HDMI显示屏接口、音频输入输出等交互…

[计算机网络]基本概念

目录 1.ip地址和端口号 1.1IP地址 1.2端口号 2.认识协议 2.1概念: 2.2知名协议的默认端口 3.五元组 4.协议分层 4.1分层的作用 4.2OSI七层模型 4.3TCP/IP五层(四层)模型 ​编辑4.4网络设备对应的分层: ​编辑以下为跨…

TestNG中的@AfterSuite注释

目录 什么是AfterSuite annotation? 代码示例 是时候来点头脑风暴了 我们可以在一个类中使用多个AfterSuite注释方法吗? AfterSuite放在超类上时如何工作? TestNG是Java中广泛使用的测试框架,用于进行单元,功能和…

大数据开发之Spark(入门)

第 1 章:Spark概述 1.1 什么是spark 回顾:hadoop主要解决,海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚&#xff…

CSS实现文本和图片无限滚动动画

Demo图如下&#xff1a; <style>* {margin: 0;padding: 0;box-sizing: border-box;font-family: Poppins, sans-serif;}body {min-height: 100vh;background-color: rgb(11, 11, 11);color: #fff;display: flex;flex-direction: column;justify-content: center;align-i…

Python无人系统

Python无人系统全方位自动坦克在现代军事中具有重要性。以下是几个重要原因&#xff1a; 自动化作战能力&#xff1a;Python无人系统全方位自动坦克能够在没有人类干预的情况下进行作战。它可以通过计算机视觉、传感器和算法来自主地感知环境、分析情报&#xff0c;制定战术和执…

Vision Mamba:将Mamba应用于计算机视觉任务的新模型

Mamba是LLM的一种新架构&#xff0c;与Transformers等传统模型相比&#xff0c;它能够更有效地处理长序列。就像VIT一样现在已经有人将他应用到了计算机视觉领域&#xff0c;让我们来看看最近的这篇论文“Vision Mamba: Efficient Visual Representation Learning with Bidirec…

Kubernetes operator(一)client-go篇【更新中】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列第一篇&#xff0c;主要对client-go进行学习&#xff0c;从源码阅读角度&#xff0c;学习client-go各个组件的实现原理、如何协同工作等参考视频&#xff1a;Bilibili 2022年最新k…

程序员裁员潮:技术变革下的职业危机

程序员裁员潮&#xff1a;技术变革下的职业危机 一对来自中国的工程师夫妻在美身亡&#xff0c;疑因谷歌裁员致悲剧发生。在技术变革下&#xff0c;裁员对于程序员的影响到底有多大&#xff1f;快来和我们分享一下你的看法吧~ 哎&#xff0c;这是悲哀&#xff0c;让我又想起来…

pod的亲和性和反亲和性

pod的亲和性和反亲和性 调度策略&#xff1a; 匹配标签 操作符 拓扑域 调度目标 node的亲和性 主机标签 In Notin exists doesexists Gt Lt 不支持 指定主机 pod的亲和性 pod的标签 In Notin exists doesexists 支持 pod和指…

【无标题】JavaScript 高阶 Promise篇

1、什么是Promise Promise 是异步编程的一种解决方案&#xff0c;其实是一个构造函数&#xff0c;自己身上有all、reject、resolve这几个方法&#xff0c;原型上有then、catch等方法。&#xff08;ps:关于原型&#xff1a;JavaScript高级 构造函数与原型篇&#xff09; Promi…

什么是 Web3.0

什么是Web3.0 对于 Web3.0 的解释网上有很多&#xff0c;目前来说 Web3.0 是一个趋势&#xff0c;尚未有明确的定义。我们今天讨论下几个核心的点&#xff0c;就能很好的理解 Web3.0 要解决哪些问题 谁创造数据&#xff0c;这里的数据可以是一篇博客&#xff0c;一段视频&…

Oracle Linux 8.9 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演示环境下进行的&#xff0c;演示环境中没有任何有价值的数据&#xff0c;但这并不代表摆在你面前的环境也是如此。生产环境…

在Vue.js中,什么是mixins?它们的作用是什么?

目录 一、Vue.js介绍 二、什么是mixins 三、mixins的应用场景 四、mixins的优势和作用 一、Vue.js介绍 Vue.js是一种流行的JavaScript前端框架,用于构建交互式的Web界面。它被设计为易于理解和集成的框架,使开发者能够快速构建可复用的组件化应用程序。Vue.js采用了MVVM&a…

如何测试python 版本与 torch 、 torchvision 版本是否对应?

python 版本与 torch 、 torchvision 版本的对应关系如下图所示&#xff1a; 打开 anaconda powershell prompt&#xff0c;输入如下命令&#xff1a; >python>>>import torch>>>c torch.ones((3,1)) //创建矩阵>>>c c.cuda(0) …

云原生周刊:Meshery v0.70 发布 | 2024.1.22

开源项目推荐 flux-cluster-template 该项目用于部署由 Flux、SOPS、GitHub Actions、Renovate、Cilium 等支持的 Kubernetes 集群&#xff0c;专注于使用 GitOps 实践和基础设施自动化。 Kine 该项目可以在 MySQL、Postgres、SQLite、Dqlite 等数据库上运行 Kubernetes&am…