首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用Mongoose创建一个数据处理的模块

如何使用Mongoose创建一个数据处理的模块

原创
作者头像
炑焽
发布于 2025-01-11 13:12:28
发布于 2025-01-11 13:12:28
7731
举报

前言

对于一个用户模型,可以定义用户名、邮箱、密码等字段及其类型(如字符串、数字等)。这使得数据的存储和操作更加规范,避免了数据的随意性和混乱。比如,在没有使用 Mongoose 的情况下,可能会在数据库中存储各种格式不一致的用户数据,而使用 Mongoose 后,所有用户数据都必须符合预定义的 Schema 结构,保证了数据的一致性。

一、使用 Mongoose 相比直接使用 MongoDB 的好处

Mongoose官网

Mongodb官网

1、提供结构化的数据模型:

  • 定义数据结构Mongoose 通过 Schema 定义数据结构,包括数据类型、默认值、验证器等。这使得数据存储更加规范,避免了数据的随意性和混乱。
  • 数据验证:同时Mongoose 内置了丰富的数据验证功能,可以确保数据在保存到数据库前符合预期格式。支持多种基本类型验证以及自定义验证器,减少了无效数据存储的风险,提高了数据质量。

2、简化数据库操作

  • 封装操作方法:Mongoose 提供了简洁易用的方法来封装常见的数据库操作,如 find()、save()、findByIdAndUpdate()、findByIdAndDelete() 等。这些方法使得开发者无需编写复杂的原生 MongoDB查询语句,降低了开发难度。
  • 链式调用和查询构建器:支持链式调用和查询构建器,可以灵活地构建复杂的查询条件。比如可以轻松实现按条件查询、排序、限制结果数量等操作,代码更加简洁、易读。

3、支持异步操作

  • Promise 支持:Mongoose 的操作方法返回 Promise 对象,方便使用 async/await 语法进行异步操作。避免了回调地狱问题,提高了代码的可维护性。
  • 错误处理: 使用 async/await 时,可以通过 try/catch 语句块集中处理错误,统一返回错误信息。

二、如何使用Mongoose创建一个数据处理模块

1、 安装 Mongoose

在 Node.js 项目中,首先需要安装Mongoose。打开终端

代码语言:bash
AI代码解释
复制
npm install mongoose

2、创建一个main.js数据处理模块

  • 定义一个异步函数 main

用于连接到 MongoDB 数据库,新建model/index.js

代码语言:js
AI代码解释
复制
const mongoose = require("mongoose");
async function main() {
  await mongoose.connect("mongodb://127.0.0.1:27017/express-template");
}
  • 调用 main 函数,并处理其返回的 Promise
代码语言:js
AI代码解释
复制
main()
  .then((res) => {
    console.log("数据库连接成功");
  })
  .catch((err) => {
    console.log("数据库连接失败");
  });
  • 定义一个 users 模型的 Schema

SchemaMongoose 中定义文档结构的方式。在model/index.js中定义 Schema

代码语言:js
AI代码解释
复制
const users = new mongoose.Schema({
  username: {
    type: String,
    required: true,
  },
  age: {
    type: Number,
    required: true,
  },
});
  • 使用 Schema 创建一个 User 模型
代码语言:js
AI代码解释
复制
const userModel = mongoose.model("User", users);
  • 创建一个新的 User 实例
代码语言:js
AI代码解释
复制
const user1 = new userModel({ username: "xiaoyi", age: 20 });
  • 保存 User 实例到数据库
代码语言:js
AI代码解释
复制
user1.save();
  • 完整main.js
代码语言:js
AI代码解释
复制
const mongoose = require("mongoose");
async function main() {
  await mongoose.connect("mongodb://127.0.0.1:27017/express-template");
}
main()
  .then((res) => {
    console.log("数据库连接成功");
  })
  .catch((err) => {
    console.log("数据库连接失败");
  });

const users = new mongoose.Schema({
  username: {
    type: String,
    required: true,
  },
  age: {
    type: Number,
    required: true,
  },
});
const userModel = mongoose.model("User", users);
const user1 = new userModel({ username: "xiaoyi", age: 20 });
user1.save();

3、启动Mongodb服务

  • 以管理员身份打开 cmd启动服务
代码语言:bash
AI代码解释
复制
net start MongoDB
image.png
image.png
image.png
image.png

4、打开nodejs项目,启动服务

代码语言:bash
AI代码解释
复制
node ./model/index.js
image.png
image.png

5、打开Navicat数据库开发工具,查看创建的User模型

image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
可以,大佬,互粉一下
可以,大佬,互粉一下
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
mongoose验证
enum: [‘html’, ‘css’, ‘javascript’, ‘node.js’]
Qwe7
2022/05/23
2.8K0
MongoDB数据库基本操作
安装 mongodb MongoDBcompass 配置mongoose npm install mongoose node 连接数据库 const mongoose = require('mongoose');<br/> mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })<br/> .then( () => console.log('数据库连接成功'))<br/> .catch( err
用户3461357
2019/08/20
4.9K0
Mongoose模块化实践
Mongoose为操作MongoDB数据库提供了很大的方便,在实际开发过程中,为了保证可扩展与可维护性,通常会将Mongoose进行模块化,下面记录一个模块化的实例,便于在以后的项目中复用。
越陌度阡
2020/11/26
1.1K0
Mongoose中的修饰符
Mongoose提供了修饰符功能用于对存取的数据进行一些加工,常用的修饰符有以几下几种:
越陌度阡
2020/11/26
1.4K0
使用 Mongoose 操作 MongoDB
Mongoose是在node.js环境下对mongodb进行便捷操作的对象模型工具。
4O4
2022/04/25
1.9K0
使用 Mongoose 操作 MongoDB
mongoose官方文档总结
你也可以设定虚拟值的 setter ,下例中,当你赋值到虚拟值时,它可以自动拆分到其他属性:
六个周
2022/10/28
21.8K0
在Node中如何操作MongoDB数据库
MongoDB是一款流行的文档型数据库,可以在Node.js中使用官方的MongoDB包或者第三方包mongoose进行操作。
泽霖
2023/11/29
1.3K0
Egg 中结合Mongoose操作Mongodb
1. 安装模块 npm i egg-mongoose --save 2. 配置 egg-mongoose 插件 // config/plugin.js 'use strict'; exports.ejs = { enable: true, package: 'egg-view-ejs', }; // 配置egg-mongoose插件 exports.mongoose = { enable: true, package: 'egg-mongoose' }; 3. 配置连接数据库
越陌度阡
2020/11/26
2.3K0
大数据技术之_22_MongoDB学习_MongoDB 的简介、下载、安装、启动、配置和关闭 + MongoDB 的基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查
  • 数据库是按照数据结构来组织、存储和管理数据的仓库。   • 我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。   • 所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。而数据库就是数据持久化的最佳选择。   • 说白了,数据库就是存储数据的仓库。
黑泽君
2019/05/15
18.8K0
MongoDB增删改查操作
创建集合分为两步,一是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。
梨涡浅笑
2020/10/30
20.5K0
MongoDB增删改查操作
Mongoose 操作数据库实现增、删、改、查
Mongoose 是在 Node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具,Mongoose 是 NodeJS 的驱动,为NodeJS独有。
越陌度阡
2020/11/26
2.1K0
初试MongoDB学习之Mongoose的使用
在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。我们想要操作MongoDB数据,那就得先要具备上面所说的包含数据的“文档”,文档又是什么意思呢,请看如下介绍。
九旬
2020/10/23
6.7K0
初试MongoDB学习之Mongoose的使用
使用Mongoose的populate方法实现多表关联查询
MongoDB在3.2以上的版本有类似于 join 的 $lookup 聚合操作符,其实 Mongoose 有一个更强大的替代方法,叫做populate ( ),它允许你在其他集合中引用文档,实现更简洁优雅的查询操作。
越陌度阡
2020/11/26
4K0
使用Mongoose的populate方法实现多表关联查询
Nodejs学习笔记(十四)— Mongoose介绍和入门
简介   Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具   那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操作介绍可以参考:http://www.cnblogs.com/zhongweiv/p/node_mongodb.html   Github地址:https://github.com/Automattic/mongoose   API Docs:http://mongoosejs.com/docs/guide.html   
Porschev
2018/03/28
3.5K0
Nodejs学习笔记(十四)— Mongoose介绍和入门
MongDB删除文档和更新文档
4、删除文档和更新文档 // 删除单个 Course.findOneAndDelete({}).then(result => console.log(result)) // 删除多个 User.deleteMany({}).then(result => console.log(result)) // 引入mongoose第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接 mongoose.connect('mongodb://loca
Qwe7
2022/05/23
3.2K0
mogoose 创建数据库并增删改查
约束能用对象的方法描述数据类型 是否必须 是否重复 默认值 等,如下定义了一个用户表结构
艳艳代码杂货店
2021/09/26
5.4K0
MongoDB增删改查操作
创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。
星辰_大海
2020/11/04
7.4K0
MongoDB增删改查操作
mongoose食用姿势!
Mongoose库简而言之就是对node环境中MongoDB数据库操作的封装,一种对象模型工具,可以将数据库中的数据转换为JavaScript对象供我们使用。
十月梦想
2018/08/29
1.6K0
持久化储存(二)
下载地址:https://www.mongodb.com/download-center#community
一粒小麦
2019/07/23
14.3K0
持久化储存(二)
你真的了解mongoose吗?
继上篇文章「Koa2+MongoDB+JWT实战--Restful API最佳实践」后,收到许多小伙伴的反馈,表示自己对于mongoose不怎么了解,上手感觉有些难度,看官方文档又基本都是英文(宝宝心里苦,但宝宝不说
前端森林
2020/04/23
43.2K1
相关推荐
mongoose验证
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档