Mongoose 使用指南:什么是 Schema 和 Model

在前端领域中,Mongoose 是一个非常重要的工具,它可以帮助我们快速和方便地操作 MongoDB 数据库。在 Mongoose 中,有两个非常重要的概念,分别是 Schema 和 Model。

什么是 Schema

Schema 是用来定义 MongoDB 文档结构的对象,它可以用来给字段定义类型、验证数据、设置默认值等等。在 Mongoose 中,Schema 对象是由 mongoose.Schema 构造函数创建的,如下示例代码所示:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const UserSchema = new Schema({
  username: String,
  password: String,
  email: String,
  birthday: Date,
  created_at: { type: Date, default: Date.now }
});

在上述代码中,我们定义了一个 UserSchema,它包含了 username、password、email、birthday 和 created_at 字段,其中 username、password、email、birthday 的类型都是 String 或 Date 类型,created_at 字段默认值是当前时间。

什么是 Model

Model 是一个基于 Schema 创建的对象,它是 Mongoose 和 MongoDB 交互的接口。通过 Model,我们可以对数据库进行增删改查操作。在 Mongoose 中,Model 是由 mongoose.model() 方法创建的,如下示例代码所示:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const UserSchema = new Schema({
  username: String,
  password: String,
  email: String,
  birthday: Date,
  created_at: { type: Date, default: Date.now }
});

const UserModel = mongoose.model('User', UserSchema);

在上述代码中,我们使用 mongoose.model() 方法创建了一个名为 User 的 Model,它基于 UserSchema。Model 也可以用来进行数据的增删改查操作,下面是一些常用的操作:

创建数据

const user = new UserModel({
  username: 'john',
  password: '123456',
  email: 'john@example.com',
  birthday: new Date(1990, 1, 1)
});

user.save();

在上述代码中,我们使用 UserModel 创建了一个名为 john 的用户数据,并通过 save() 方法将其保存到数据库中。

查询数据

UserModel.find({ username: 'john' }, (err, users) => {
  if (err) {
    console.error(err);
  } else {
    console.log(users);
  }
});

在上述代码中,我们使用 UserModel.find() 方法查询了所有 username 为 john 的用户数据,并在回调函数中输出查询结果。

更新数据

UserModel.updateOne({ _id: '123' }, { username: 'john2' }, (err) => {
  if (err) {
    console.error(err);
  } else {
    console.log('Update success');
  }
});

在上述代码中,我们使用 UserModel.updateOne() 方法将 _id 为 123 的用户数据的 username 字段更新为 john2。

删除数据

UserModel.deleteOne({ _id: '123' }, (err) => {
  if (err) {
    console.error(err);
  } else {
    console.log('Delete success');
  }
});

在上述代码中,我们使用 UserModel.deleteOne() 方法删除了 _id 为 123 的用户数据。

总结

在本文中,我们深入了解了 Mongoose 中的两个重要概念:Schema 和 Model。通过 Schema,我们可以定义 MongoDB 文档结构的对象,验证数据、设置默认值等等;通过 Model,我们可以操作数据库进行增删改查等操作。通过本文的学习,相信读者已经可以快速上手使用 Mongoose 开发自己的项目了。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65af6faeadd4f0e0ff8de3d4