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

前言

对于一个用户模型,可以定义用户名、邮箱、密码等字段及其类型(如字符串、数字等)。这使得数据的存储和操作更加规范,避免了数据的随意性和混乱。比如,在没有使用 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 复制代码
npm install mongoose

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

  • 定义一个异步函数 main

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

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

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

js 复制代码
const users = new mongoose.Schema({
  username: {
    type: String,
    required: true,
  },
  age: {
    type: Number,
    required: true,
  },
});
  • 使用 Schema 创建一个 User 模型
js 复制代码
const userModel = mongoose.model("User", users);
  • 创建一个新的 User 实例
js 复制代码
const user1 = new userModel({ username: "xiaoyi", age: 20 });
  • 保存 User 实例到数据库
js 复制代码
user1.save();
  • 完整main.js
js 复制代码
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 复制代码
net start MongoDB

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

bash 复制代码
node ./model/index.js

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

相关推荐
孟陬1 小时前
Node.js 中 `\b` 的作用
node.js·bun
小小荧5 小时前
🚀 Node.js 之父离开 Deno,带着整个团队加入了 Cloudflare
前端·node.js
Wx-bishekaifayuan6 小时前
springboot公考微信小程序35511-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
damoluomu6 小时前
Directus 换掉 GPL 之后,Node.js CMS 到底怎么选?(四)
node.js
Wx-bishekaifayuan7 小时前
springboot线上中医药养生平台管理系统36753-计算机课程设计、毕业设计
java·spring boot·后端·spring·课程设计·express·旅游
Wx-bishekaifayuan7 小时前
springboot大学生就业平台47691-计算机课程设计、毕业设计
java·spring boot·后端·elasticsearch·课程设计·express·旅游
前端一小卒7 小时前
搜索 API 额度用完返回空数组,Agent 就开始一本正经地胡说
前端·javascript·node.js
濮水大叔17 小时前
Cabloy 双引擎架构详解:Vona 与 Zova 是如何协作的
typescript·node.js·全栈
ly768919 小时前
MongoDB 副本集选举风暴排查:从心跳超时到 Journal 刷盘阻塞
数据库·mongodb·php·mongodb 副本集·选举风暴·journal 刷盘·writeconcern
LRL_20 小时前
跨平台 Node 模块安装指南:如何利用 pnpm/npm 配置`supportedArchitectures` 锁定平台依赖
前端·npm·node.js