主页 > 互联网  > 

Mongoose详解

Mongoose详解

为 Node.js 与 MongoDB 之间提供了一个更高级、更便捷的交互方式。

一、安装 # 使用 npm 安装 npm install mongoose 二、基本使用 1. 连接数据库 const mongoose = require("mongoose"); // 数据库连接 URI const uri = "mongodb://localhost:27017/myDatabase"; // 连接到 MongoDB mongoose.connect(uri, {   useNewUrlParser: true,   useUnifiedTopology: true, }); // 获取数据库连接对象 const db = mongoose.connection; // 监听连接成功事件 db.on("connected", () => {   console.log("Connected to MongoDB"); }); // 监听连接错误事件 db.on("error", (err) => {   console.error("MongoDB connection error:", err); }); 2. 定义数据模型

数据模型是基于 Schema 定义的。Schema 定义了文档的结构和数据类型,而模型则是基于 Schema 创建的构造函数,用于操作数据库中的文档。

// 定义 Schema const userSchema = new mongoose.Schema({   name: String,   age: Number,   email: {     type: String,     unique: true,   }, }); // 创建模型 const User = mongoose.model("User", userSchema); 三、文档操作 1. 创建文档

使用模型的构造函数创建一个新的文档实例,然后调用 `save()` 方法将其保存到数据库中。

const newUser = new User({   name: "John",   age: 30,   email: "john@example ", }); newUser   .save()   .then((savedUser) => {     console.log("Saved user:", savedUser);   })   .catch((err) => {     console.error("Error saving user:", err);   }); 2. 查询文档

使用模型的静态方法(如 `find()`、`findOne()` 等)来查询文档。

// 查询所有用户 User.find()   .then((users) => {     console.log("All users:", users);   })   .catch((err) => {     console.error("Error finding users:", err);   }); // 根据条件查询单个用户 User.findOne({ name: "John" })   .then((user) => {     console.log("User:", user);   })   .catch((err) => {     console.error("Error finding user:", err);   }); 3. 更新文档

使用模型的静态方法(如 `updateOne()`、`updateMany()` 等)或文档实例的 `update()` 方法来更新文档。

// 更新单个文档 User.updateOne({ name: "John" }, { age: 31 })   .then((result) => {     console.log("Update result:", result);   })   .catch((err) => {     console.error("Error updating user:", err);   }); 4. 删除文档

使用模型的静态方法(如 `deleteOne()`、`deleteMany()` 等)来删除文档。

// 删除单个文档 User.deleteOne({ name: "John" })   .then((result) => {     console.log("Delete result:", result);   })   .catch((err) => {     console.error("Error deleting user:", err);   }); 5. 数据验证

`mongoose` 提供了强大的数据验证功能,可以在 Schema 中定义验证规则,确保插入或更新的数据符合要求。如下:`name` 字段是必需的,`age` 字段的取值范围在 18 到 100 之间,`email` 字段有唯一约束,并且使用自定义的验证函数来验证邮箱格式。

const userSchema = new mongoose.Schema({   name: {     type: String,     required: true,   },   age: {     type: Number,     min: 18,     max: 100,   },   email: {     type: String,     unique: true,     validate: {       validator: function (value) {         return /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(value);       },       message: "Invalid email address",     },   }, }); 四、中间件

`mongoose` 支持中间件,允许在文档保存、更新、删除等操作前后执行自定义逻辑。

userSchema.pre("save", function (next) {   // 在保存文档之前执行的逻辑   console.log("Before saving user:", this);   next(); }); userSchema.post("save", function (doc, next) {   // 在保存文档之后执行的逻辑   console.log("After saving user:", doc);   next(); });

标签:

Mongoose详解由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Mongoose详解