📜  mongoose 保存后获取 id - Javascript (1)

📅  最后修改于: 2023-12-03 14:44:23.179000             🧑  作者: Mango

Mongoose 保存后获取 id - Javascript

简介

Mongoose 是一个优秀的 MongoDB ODM 库,方便我们以面向对象的方式与 MongoDB 进行交互。 Mongoose 提供了 Schema、Model、Query 和 Document 等一系列 API,让我们可以方便地对数据库进行操作。

在使用 Mongoose 保存文档时,我们需要注意的是如果我们需要获取保存后的文档的 ID,我们需要使用 save 方法后才能得到 ID,因为在 save 方法之前,Mongoose 并没有为文档分配一个 ID。

下面是如何在 Mongoose 中保存文档并获取 ID 的例子。

代码示例
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// 定义了一个用户文档的 Schema
const userSchema = new Schema({
  name: { type: String, required: true },
  age: Number,
});

// 将 Schema 编译成 Model
const User = mongoose.model('User', userSchema);

// 实例化 User Model,保存用户文档并获取 ID
const user = new User({ name: 'John', age: 21 });
user.save(function(err, savedUser) {
  if (err) {
    console.error(err);
  } else {
    console.log('保存的用户信息:' + savedUser);
    console.log('保存的用户 ID 为:' + savedUser._id);
  }
});
代码解释
  1. 首先,我们引入了 mongoose 库,并创建了一个用户文档的 Schema。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
  name: { type: String, required: true },
  age: Number,
});

用户文档的 Schema 中包含了两个字段:nameage。其中,name 字段是必填字段,必须提供。

  1. 接下来,我们通过将 Schema 编译成 Model,将用户文档的 Schema 转换为可操作的 Model 对象。
const User = mongoose.model('User', userSchema);

在定义 Model 时,第一个参数是 Model 的名称,第二个参数是对应的 Schema。

  1. 使用 Model 创建文档对象。
const user = new User({ name: 'John', age: 21 });

在创建文档对象时,我们需要提供一些必填字段的值,以及可选字段的值。这里我们提供了 nameage 两个字段的值。

  1. 使用 save 方法保存文档对象并获取 ID。
user.save(function(err, savedUser) {
  if (err) {
    console.error(err);
  } else {
    console.log('保存的用户信息:' + savedUser);
    console.log('保存的用户 ID 为:' + savedUser._id);
  }
});

调用 save 方法后,如果保存成功,第二个参数 savedUser 将是保存成功后的文档对象,其中 _id 字段为保存后的文档 ID。

结论

在 Mongoose 中,使用 save 方法后才能获取保存后的文档 ID。我们需要注意,如果没有正确处理错误,可能导致保存失败,从而无法获取文档 ID。因此,在使用 save 方法时,务必正确处理可能出现的错误。