📜  使用 Mongoose 和 MongoDB Atlas 的 NodeJs CRUD 操作(1)

📅  最后修改于: 2023-12-03 15:36:32.147000             🧑  作者: Mango

使用 Mongoose 和 MongoDB Atlas 的 NodeJs CRUD 操作

在这篇文章中,我们将介绍如何使用Mongoose和MongoDB Atlas的Node.js来执行CRUD操作。Mongoose是一种优秀的MongoDB对象建模工具,而MongoDB Atlas则是MongoDB的云托管服务,它可以让我们轻松地连接和管理我们的MongoDB实例。

准备工作

在继续之前,我们需要先完成一些准备工作:

  1. 安装Node.js和npm
  2. 注册MongoDB Atlas账户并创建MongoDB实例
  3. 创建一个Node.js项目,并通过npm安装Mongoose和其他可能需要的依赖项
连接到MongoDB Atlas

要在我们的Node.js应用程序中连接到MongoDB Atlas,我们需要使用Mongoose。通过Mongoose,我们可以轻松地创建和管理数据库模式、执行CRUD操作和执行数据验证和转换等高级功能。

首先,我们需要安装Mongoose:

npm install mongoose

然后,在我们的应用程序中,我们需要通过Mongoose连接到MongoDB Atlas:

const mongoose = require('mongoose');

mongoose.connect(MONGODB_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true
}).then(() => {
  console.log('Connected to MongoDB Atlas');
}).catch((error) => {
  console.error('Error connecting to MongoDB Atlas: ', error);
});

在上面的代码中,我们首先导入Mongoose模块,然后通过mongoose.connect()方法连接到MongoDB Atlas实例。在这个方法中,我们需要传递MongoDB Atlas实例的URI,以及一些选项(在这里我们使用了useNewUrlParseruseUnifiedTopology选项)。

创建模式和模型

在我们可以执行CRUD操作之前,我们需要先创建模式和模型。Mongoose使用模式来定义MongoDB集合的文档结构和字段类型。同时,模式也定义了MongoDB集合上可执行的方法和虚拟属性等方面。

首先,让我们创建一个简单的模式:

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  age: {
    type: Number,
    required: false
  }
});

const User = mongoose.model('User', userSchema);

module.exports = User;

在上面的代码中,我们定义了一个名为userSchema的模式,它有3个字段:nameemailage。其中,nameemail字段是必需的,并且email字段必须是唯一的。如果指定了required选项,则表示该字段是必需的。unique选项可以防止重复记录。age字段是可选的。

然后,我们通过mongoose.model()方法创建一个模型,这个模型将使用我们定义的模式。模型用于对MongoDB集合中的文档执行CRUD操作和其他方法。在这里,我们使用module.exports语句导出模型,以使其他文件能够访问它。

执行CRUD操作

在我们准备好了模型之后,我们就可以使用它来执行CRUD操作了。下面的代码展示了如何使用模型执行基本的CRUD操作:

const mongoose = require('mongoose');
const User = require('./models/user');

// 创建一条记录
const user = new User({
  name: 'John Doe',
  email: 'john@test.com',
  age: 30
});

user.save().then(() => {
  console.log('User created');
}).catch((error) => {
  console.error('Error creating user: ', error);
});

// 查询记录
User.findOne({ email: 'john@test.com' }).then((user) => {
  console.log(user);
}).catch((error) => {
  console.error('Error finding user: ', error);
});

// 更新记录
User.updateOne({ email: 'john@test.com' }, { age: 31 }).then(() => {
  console.log('User updated');
}).catch((error) => {
  console.error('Error updating user: ', error);
});

// 删除记录
User.deleteOne({ email: 'john@test.com' }).then(() => {
  console.log('User deleted');
}).catch((error) => {
  console.error('Error deleting user: ', error);
});

在上面的代码中,我们首先导入Mongoose和我们创建的用户模型。然后,我们使用模型的save()方法创建一个新用户。findOne()方法用于查询一条记录,updateOne()方法用于更新记录,deleteOne()方法用于删除记录。在执行这些方法时,如果成功了,我们会在控制台打印一条消息;如果失败了,我们会将错误打印到控制台。注意,这里我们并没有处理Promise的错误。

结论

这篇文章介绍了如何使用Mongoose和MongoDB Atlas的Node.js来执行CRUD操作。我们首先展示了如何通过Mongoose连接到MongoDB Atlas,然后创建了一个用户模型和一些基本的CRUD操作。当然,这只是Mongoose和MongoDB Atlas的基本用法。有了这些基础,我们可以继续学习更多高级的功能,例如数据验证、可扩展性和复杂的聚合查询等等。