一、MongoDB、express的安装和基本使用

数据库【Sqlite3、MongoDB、Mysql】简介&小记

Sqlite3:

  • SQLite3是一个轻量级的数据库系统,它被设计成嵌入式数据库。这意味着它是一个包含在应用程序中的数据库,而不是独立运行的系统服务。
  • 适用场景:如小型工具、游戏、本地桌面应用程序等。比如本地存储工具编辑文件、游戏进度等,这类应用通常不会同步数据到云端。
  • 注:可以理解为本地数据库,跟随设备;但一些云服务提供商提供了在云上运行SQLite3的选项,这意味着您可以在云服务器上安装和运行SQLite3数据库

MongoDB:

  • 类型:MongoDB是一个非关系型数据库,也被称为NoSQL数据库。它使用文档结构来存储数据,而不是传统的表格形式。
  • 特点:MongoDB非常适合处理大量数据和复杂的数据结构。它可以存储各种类型的数据,如文档、图片、视频等,并且能够轻松地进行查询和更新操作。由于其灵活性,MongoDB在大数据、社交媒体、内容管理和其他需要快速迭代和灵活数据模型的应用中非常受欢迎。
  • 适用场景:适用于Web应用程序、移动应用程序和大数据应用,因为它能够处理大量的数据和高并发的请求。

Mysql:

  • 类型:MySQL是一个关系型数据库管理系统,它是基于表格的存储系统
  • 特点:MySQL是一个非常成熟和稳定的数据库系统,提供了强大的事务处理功能和复杂查询的支持。它支持大量的并发连接,并且有丰富的API和工具支持。
  • 适用场景:适用于需要高度结构化数据和复杂查询的应用,如电子商务网站、在线银行系统等。MySQL也常用于作为后端数据库为Web应用程序提供支持。

MongoDB安装&配置
  1. MongoDB官网: 根据当前系统操作系统选择合适的版本下载。
  2. 解压并拷贝文件到合适的存放目录下:/usr/local/mongodb
  3. 创建数据和日志目录:
sudo mkdir -p /usr/local/var/mongodb/data
sudo mkdir -p /usr/local/var/mongodb/log
  1. 创建配置文件(可选,根据需要自定义配置): 创建mongod.conf配置文件,并编辑它以指定数据目录和日志路径等信息。
touch /usr/local/etc/mongod.conf

编辑配置文件,例如:

systemLog:destination: filepath: /usr/local/var/mongodb/log/mongo.loglogAppend: true
storage:dbPath: /usr/local/var/mongodb/data
net:bindIp: 127.0.0.1port: 27017
  1. MongoDB的可执行文件路径没有添加到你的系统PATH环境变量中,并确保配置没有问题,可正常访问
# 1、打开终端(Terminal)
# 2、输入以下命令来编辑你的shell配置文件
nano ~/.bashrc
#	3、在文件的末尾添加以下行
export PATH=$PATH:/usr/local/mongodb/bin/
# 4、按下Ctrl + X,然后按下Y以保存更改。
# 5、按下Enter键退出编辑器。
# 6、在终端中运行以下命令,使更改生效:
source ~/.bashrc
# 7、确认MongoDB是否已经正确安装。你可以通过在终端中运行以下命令来检查
which mongod
# 8、再次运行mongod --version命令,检查是否能够正确显示版本信息
mongod --version
  1. 输入:mongod 命令来启动 MongoDB 服务器

MongoDB可视化工具使用【MongoDB Compass
  1. 官网下载安装
  2. 安装成功后,创建连接【对应mongod.conf中的bindIp,所以这里也写127.0.0.1】:

  3. 创建数据库【mydatabase】和集合【admin

  1. 在admin集合中,可添加一些数据,也可以在mydatabase数据库中创建其他集合

创建后端服务,链接MongoDB数据库,提供接口
# 在命令行中创建一个新的目录作为后端项目
mkdir my-backend-app
cd my-backend-app# 初始化Node.js项目并安装Express
npm init -y
npm install express --save# 在Node.js应用中与MongoDB交互,你需要安装MongoDB驱动程序:
npm install mongodb --save#	配置全局 CORS 设置,需要安装	cors
npm install cors --save
  1. 创建mongoConnection.js文件,用于连接到MongoDB数据库
const { MongoClient } = require("mongodb");
// MongoDB连接字符串,其中包含数据库服务器地址、端口和数据库名称。
const uri = "mongodb://127.0.0.1:27017/mydatabase";
const options = {};// 定义一个异步函数 connect() 用于连接到MongoDB数据库
async function connect() {// 定义一个私有变量 _db 存储数据库实例let _db;// 如果_db还没有被初始化(即尚未连接)if (!_db) {// 使用MongoClient尝试连接到指定URI的数据库console.log("使用MongoClient尝试连接到指定URI的数据库");const client = await MongoClient.connect(uri, options);// 获取数据库实例_db = client.db();// 输出一条消息表示已经成功连接到MongoDBconsole.log("Connected to MongoDB");}// 返回已连接的数据库实例return _db;
}// 导出connect函数,以便在其他模块中调用以获取数据库连接
module.exports = connect;
  1. 创建简单的服务器文件: server.js
// 引入所需模块
const cors = require('cors');
const express = require('express');
const bodyParser = require('body-parser');
const connectDB = require('./mongoConnection'); // 引入数据库连接模块// 创建 Express 应用实例
const app = express();// 配置全局 CORS 设置,允许来自所有域名的请求(仅在开发环境中这样做)
app.use(cors({origin: process.env.NODE_ENV === 'production' ? 'https://your-production-url.com' : '*',methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],allowedHeaders: ['Content-Type', 'Authorization'],
}));// 配置全局中间件
// bodyParser.json() 用于解析请求体中的 JSON 格式数据
app.use(bodyParser.json());
// bodyParser.urlencoded() 用于解析请求体中的 URL-encoded 格式数据
app.use(bodyParser.urlencoded({ extended: true }));// 连接 MongoDB 数据库
connectDB().then(() => console.log('Connected to MongoDB')).catch(err => console.error('Error connecting to MongoDB', err));// 假设我们有admin相关的路由,在此引入并挂载到应用上
const adminRouter = require('./routes/admin');
app.use('/api/admin', adminRouter);// 错误处理中间件(通常放在所有其他中间件之后)
app.use((err, req, res, next) => {console.error(err.stack);res.status(500).send('Something broke!');
});// 设置监听端口,启动服务器
const port = process.env.PORT || 3001;
app.listen(port, () => {console.log(`Server is running on port ${port}`);
});
  1. 创建:routes/admin.js,管理admin相关的路由
const express = require("express");
const connectDB = require("../mongoConnection");
const router = express.Router();async function getAdminFromDatabase() {// 连接到数据库const db = await connectDB();// 选择 admin 集合(假设你的用户数据存储在这个集合中)const adminCollection = db.collection("admin");// 执行查询以获取所有admin数据const result = await adminCollection.find({}).toArray();return result;
}// 假设我们有一个获取所有管理数据的路由处理器
router.get("/", async (req, res) => {// 这里通常会从 MongoDB 数据库或其他数据源获取数据const admin = await getAdminFromDatabase(); // 假设这是一个异步操作来获取数据res.json(admin);
});module.exports = router;
  1. 启动服务器:node server.js
  2. 在vue项目中调用接口查询admin接口,数据返回,接口正常

下一篇:二、mongoose的使用,实现用户集合的操作-CSDN博客

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

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

相关文章

数据结构OJ题——二叉树前序、中序遍历非递归实现(Java版)

二叉树前序、中序遍历非递归实现 前序非递归遍历实现中序非递归遍历实现 前序非递归遍历实现 题目: 二叉树前序遍历非递归实现 总体思路:用非递归的方式模拟递归遍历。 以下图为例: 图示详解: 代码实现: /*** Defi…

打开 IOS开发者模式

前言 需要 1、辅助设备:苹果电脑; 2、辅助应用:Xcode; 3、准备工作:苹果手机 使用数据线连接 苹果电脑; 当前系统版本 IOS 17.3 通过Xcode激活 两指同时点击 Xcode 显示选择,Open Develop…

【数据结构与算法】6.栈

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…

Android App开发基础(1)—— App的开发特点

本文介绍基于Android系统的App开发常识,包括以下几个方面:App开发与其他软件开发有什么不一样,App工程是怎样的组织结构又是怎样配置的,App开发的前后端分离设计是如何运作实现的,App的活动页面是如何创建又是如何跳转…

HarmonyOS 鸿蒙应用开发 (七、HTTP网络组件 axios 介绍及封装使用)

在HarmonyOS应用开发中,通过HTTP访问网络,可以使用官方提供的ohos.net.http模块。但是官方提供的直接使用不太好使用,需要封装下才好。推荐使用前端开发中流行的axios网络客户端库,如果是前端开发者,用 axios也会更加顺…

springboot项目开发,使用thymeleaf前端框架的简单案例

springboot项目开发,使用thymeleaf前端框架的简单案例!我们看一下,如何在springboot项目里面简单的构建一个thymeleaf的前端页面。来完成动态数据的渲染效果。 第一步,我们在上一小节,已经提前预下载了对应的组件了。 如图&#x…

C++20 高级编程

文章目录 前言前奏lambda浅谈std::ref的实现浅谈is_same浅谈std::function的实现std::visit 与 std::variant 与运行时多态SFINAE类型内省标签分发 (tag dispatching)软件设计六大原则 SOLID To be continue.... 前言 C20 是C在C11 之后最大的一次语言变革, 其中引入了大量具有…

MongoDB:从容器使用到 Mongosh、Python/Node.js 数据操作

文章目录 1. 容器与应用之间的关系介绍2. 使用 Docker 容器安装 MongoDB3. Mongosh 操作3.1 Mongosh 连接到 MongoDB3.2 基础操作与 CRUD 4. Python 操作 MongoDB5. Nodejs 操作 MongoDB参考文献 1. 容器与应用之间的关系介绍 MongoDB 的安装有时候并不是那么容易的&#xff0…

OSI七层模型 | TCP/IP模型 | 网络和操作系统的联系 | 网络通信的宏观流程

文章目录 1.OSI七层模型2.TCP/IP五层(或四层)模型3.网络通信的宏观流程3.1.同网段通信3.2.跨网段通信 1.OSI七层模型 在计算机通信诞生之初,不同的厂商都生产自己的设备,都有自己的网络通讯标准,导致了不同厂家之间各种协议不兼容&#xff0…

数论Leetcode204. 计数质数、Leetcode858. 镜面反射、Leetcode952. 按公因数计算最大组件大小

Leetcode204. 计数质数 题目 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 代码 class Solution:def countPrimes(self, n: int) -> int:if n < 2:return 0prime_arr [1 for _ in range(n)]prime_arr[0], prime_arr[1] 0, 0ls list()for i in…

JVM基础知识汇总篇

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-菜单管理实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…

网络原理-初识(1)

目录 网络发展史 独立模式 网络互连 局域网LAN 广域网WAN 网络通信基础 IP地址 概念 格式 端口 概念 格式 认识协议 概念 作用 五元组 网络发展史 独立模式 独立模式:计算机之间相互独立; 网络互连 随着时代的发展,越来越需要计算机之间相互通信,共享软件和数…

Springboot的 Lombok全部关联注解以及核心注解@Data详解

目录 工具安装 依赖注入 注解类别 1. Getter / Setter 2. ToString 3. EqualsAndHashCode 4. NoArgsConstructor / RequiredArgsConstructor / AllArgsConstructor 5. Data 示例 注意事项 6. Value 7. Builder 8. Slf4j / Log / Log4j / Log4j2 / XSlf4j 9. NonN…

幻兽帕鲁服务器数据备份

搭建幻兽帕鲁个人服务器&#xff0c;最近不少用户碰到内存不足、游戏坏档之类的问题。做好定时备份&#xff0c;才能轻松快速恢复游戏进度 这里讲一下如何定时将服务器数据备份到腾讯云轻量对象存储服务&#xff0c;以及如何在有需要的时候进行数据恢复。服务器中间的数据迁移…

CSS 楼梯弹弹球

<template><view class="loader"></view> </template><script></script><style>body {background-color: #212121;/* 设置背景颜色为 #212121 */}.loader {position: relative;/* 设置定位为相对定位 */width: 120px;/* 设…

java正则校验,手机号,邮箱,日期格式,时间格式,数字金额两位小数

java正则校验&#xff0c;手机号&#xff0c;邮箱&#xff0c;日期格式&#xff0c;时间格式&#xff0c;数字金额两位小数 3.58是否为金额&#xff1a;true 3.582是否为金额&#xff1a;false 1284789qq.com是否为email&#xff1a;true 1284789qq.com是否为email&#xff1…

【c语言】详解操作符(下)

前言&#xff1a; 在上文中&#xff0c;我们已经学习了 原码、反码、补码、移位 操作符、移位操作符、位操作符、逗号表达式、下标访问[ ]、函数调用&#xff08; &#xff09;&#xff0c;接下来我们将继续学习剩下的操作符。 1. 结构成员访问操作符 1.1 结构体成员的直接访…

计算机网络-ensp模拟器安装简介

一、概述 eNSP(Enterprise Network Simulation Platform)是一款由华为提供的免费的、可扩展的、图形化操作的网络仿真工具平台&#xff0c;主要对企业网路由器、交换机进行软件仿真&#xff0c;完美呈现真实设备实景&#xff0c;支持大型网络模拟。 简单来讲就是一个网络设备模…

前端大厂面试题探索编辑部——第二期

目录 题目 单选题1 题解 关于TCP 关于UDP 单选题2 题解 A选项的HTTP是否是无状态协议 B选项的HTTP支持的方法 C选项的关于HTTP的状态码 D选项HTTP协议的传输格式 题目 单选题1 1.以下哪个描述是关于 TCP 和 UDP 的区别&#xff08;&#xff09; A. TCP 是无连接的…