Express的使用笔记7 将数据保存到数据库中

news/2024/10/23 17:39:40/文章来源:https://www.cnblogs.com/jocelyn11/p/18493216

前面我们在使用的时候是将数据保存在json中,显然是不够方便的,也不够专业,这里我们尝试将数据保存到数据库中。
1. 跟随这个项目的demo,使用的是MongoDB,那首先得安装一个MongoDB咯。
1) 先下载一个zip安装包,我选择的是5版本的 https://www.mongodb.com/try/download/community

可能会失败很多次,可以刷新或者停留一会,反正就是别放弃就行~
2)安装一下,流程可以参考这个教程 https://juejin.cn/post/6844903912000978952
运行: 关掉的话这个窗口就没有了~

2.下载一个Navicat来,创建一个collection,选择MongoDB,然后就把默认的地址和端口配置一下
如图:

点击测试,如果连接成功会显示如下图:

3.回到Express项目中
1) 安装一下依赖:npm install mongoose
2)在model文件目录下创建一个index.js文件,里面引入并暴露我们的db

const mongoose = require("mongoose");// 连接MongoDB数据库
mongoose.connect("mongodb://localhost:27017/realworld", {useNewUrlParser: true,useUnifiedTopology: true,
});var db = mongoose.connection;
db.on("error", console.error.bind(console, "数据库连接失败~"));
db.once("open", function () {console.log("数据库连接成功!");
});module.exports=db; //其实不暴露也行,因为在app.js中我们也只是引入而已,不需要使用到db

3)在app.js中引入一下 require('./model')
4)运行项目看一下控制台~~ 这就成功了~

5)开始尝试往数据库里面写入数据吧~

4.起飞使用 (这里必须单开一个title才行)
1)为了模块化管理,咱们前端这边就在model中按主题创建各js文件,如:用户模块
创建 model/user.js,在里面放置用户相关api参数的字段

const mongoose = require("mongoose");const userSchema = new mongoose.Schema({username: {type: String,required: true,},password: {type: String,required: true,},bio: {type: String,defualt: null,},image: {type: String,defualt: null,},createDate: {type: Date,default: Date.now,},updateDate: {type: Date,default: Date.now,},
});module.exports = userSchema;

2)在index.js中组织导出模型类

module.exports={User:mongoose.model('User',require('./user'))
}

3)在conctroller/user.js中,引入刚刚导出的User,然后进行使用

const {User} =require("../model");
// 用户注册
exports.register = async (req, res,next) => {try {console.log(req.body,'请求体')// 数据验证:1.1基础数据验证,1.2业务数据验证// 验证通过,将数据保存到数据库中 mongooseDBconst user = new User(req.body.user)await user.save()// 发送成功res.status(200).json({user})} catch (err) {next(err);}
};

4)在postman中测试一下

5)去数据库里看看是否写入成功了~~

鉴于我们可能会有不同的环境配置不同的数据库地址,那我们就可以在config文件夹中处理咯

module.exports={dburl:"mongodb://localhost:27017/realworld"
}

然后又回去引入这个地址对应的变量咯

const mongoose = require("mongoose");
const {dburl} = require('../config/config.default')
// 连接MongoDB数据库
mongoose.connect(dburl, {useNewUrlParser: true,useUnifiedTopology: true,
});var db = mongoose.connection;
db.on("error", console.error.bind(console, "数据库连接失败~"));
db.once("open", function () {console.log("数据库连接成功!");
});module.exports={User:mongoose.model('User',require('./user'))
}

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

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

相关文章

OOP前三次题目集总结

前言 关于面对对象 面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,主要通过对象的概念来组织代码。它的核心思想是将现实世界的事物抽象为对象,通过对象之间的交互来实现程序的功能。而本学期我们学习的 JAVA 则是一种广泛使用的编程语言,支持完整的OOP特…

20222406 2024-2025-1 《网络与系统攻防技术》实验三实验报告

20222406 2024-2025-1 《网络与系统攻防技术》实验三实验报告 1.实验内容 1.1 实践内容正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧 通过组合应用各种技术实现恶意代码免杀 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软…

哪种IDE能同时写java和前端代码

在选择IDE(集成开发环境)来同时编写Java和前端代码时,几个主要的选择包括IntelliJ IDEA、Eclipse、和Visual Studio Code。IntelliJ IDEA提供了强大的Java开发支持和广泛的前端开发插件,Eclipse以其插件生态系统著称,可以通过安装相应的插件支持Java和前端开发,而Visual …

2024.10.22总结

byd放三道黑是吧本文于 github 博客同步更新。 今天打两场 byd放三道黑是吧。 第一场: A: CF1261F 将区间拆分为 \([x2^{i},(x+1)2^{i})\) 的形式,发现两个区间中的数两两异或后形成的仍为一个区间,将 A,B 都拆分后区间两两异或会得到 \(O(n^2\log^2n)\) 个区间,取并即为答…

【FMC163】基于VITA57.1标准的双通道3GSPS AD采集、双通道12GSPS DA回放FMC子卡模块(100%国产化)

板卡概述 FMC163是一款基于VITA57.1标准的实现2路14-bit、3GSPS ADC采集功能、2路14-bit 12GSPS DA回放FMC子卡模块。该模块遵循VITA57.1标准,可直接与FPGA载卡配合使用,该板卡支持对6GHz的射频信号进行数字化采样以及信号生成,板内集成了高性能的时钟管理模块,具有极高的收…

玄机蓝队靶场_应急响应_71:实战evtx-文件分析

windows日志排查工具: https://www.cnblogs.com/starrys/p/17129993.htmlwindows日志事件ID,参考文章:https://peterpan.blog.csdn.net/article/details/139887217下载日志分析工具FullEventLogView.exe https://www.nirsoft.net/utils/fulleventlogview-x64.zip 分别打开三个…

MySQL基于gtid同步,新增slave节点

环境说明:当前MySQL集群为一主一从, 新增加 Slave 节点,将架构变更为一主两从,集群已经运行了很长时间,主节点得binlog早就被purged,启动slave得时候会报错,1236、1062等 操作步骤:备份master数据,从节点reset master,导入数据 1.备份主节点数据:在进行任何操作之前,…

多校A层冲刺NOIP2024模拟赛11

又双叒叕垫底了。 rank 11,T1 90,T2 12,T3 5,T4 35。 accdoer上 rank 44,T1 100,T2 0,T3 5,T4 35。 难度难评,T1签,剩下的不可做?死磕T3了,猜一个结论假一个,打完暴力遗憾离场。 好像两个题库都挂了几分,不管了,赛前挂分RP就++。 慢报:5k_sync_closer成功地取得…

Java 中的垃圾收集器有哪些,它们的工作原理是什么?

在 Java 中,垃圾收集(GC)是自动内存管理的核心部分,它帮助开发者免于手动管理内存分配和回收,提升了开发效率和应用性能。Java中的主要垃圾收集器包括Serial GC、Parallel GC、CMS (Concurrent Mark Sweep) GC、G1 (Garbage-First) GC,以及最新的 ZGC (Z Garbage Collect…

应对复杂架构下的监控挑战?统一运维可观测能力是关键!

在全球数字化变革背景下,企业需适应数字经济与市场变化,进行系统性数字化转型。在“十四五”规划指导下,企业纷纷探求数字化应用之路,大数据、云计算、人工智能、区块链等技术成了热门话题,其中云运维备受瞩目。 企业在数字化转型中难免会碰到云上系统规划、运维体系建设、…

《花100块做个摸鱼小网站! 》第八篇—增加词云组件和搜索组件

⭐️基础链接导航⭐️ 服务器 → ☁️ 阿里云活动地址 看样例 → 🐟 摸鱼小网站地址 学代码 → 💻 源码库地址一、前言 大家好呀,我是summo,最近小网站崩溃了几天,原因一个是SSL证书到期,二个是免费的RDS也到期了,而我正边学习边找工作中,就没有顾得上修,不好意思哈…