Mongoose 中常见的 SchemaTypes 有哪些,如何使用?

Mongoose 中常见的 SchemaTypes 有哪些,如何使用?

Mongoose 是一个在 Node.js 环境下工作的对象模型库,它提供了丰富的 API,帮助我们更好地操作 MongoDB 数据库。

在 Mongoose 中,我们可以使用 SchemaTypes 来定义模型中的字段类型。常见的 SchemaTypes 包括:

  • String:字符串类型。
  • Number:数字类型。
  • Date:日期类型。
  • Buffer:二进制类型。
  • Boolean:布尔类型。
  • Mixed:混合类型,可以存储任何类型的数据。
  • ObjectId:对象 ID 类型,用来关联两个不同的集合。
  • Array:数组类型。

下面我们来看看如何使用这些 SchemaTypes。

首先,我们需要创建一个 Mongoose 模型,并在其中定义 Schema:

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

const userSchema = new Schema({
  name: String,
  age: Number,
  birthday: Date,
  avatar: Buffer,
  isVip: Boolean,
  profile: Mixed,
  photos: [String],
  books: [{
    title: String,
    author: String
  }],
  petId: {
    type: Schema.Types.ObjectId,
    ref: 'Pet'
  }
});

在上面的示例中,我们定义了一个名为 userSchema 的模型,其中包含各种不同类型的字段。其中:

  • name:字符串类型。
  • age:数字类型。
  • birthday:日期类型。
  • avatar:二进制类型。
  • isVip:布尔类型。
  • profile:混合类型。
  • photos:字符串数组类型。
  • books:包含 title 和 author 字段的对象数组类型。
  • petId:ObjectId 类型,用来关联一个名为 Pet 的集合。

接下来,我们可以使用这些 SchemaTypes 来创建模型实例,并对其进行增删改查的操作:

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

const user = new UserModel({
  name: '张三',
  age: 18,
  birthday: new Date('1999-01-01'),
  avatar: Buffer.from('...'),
  isVip: false,
  profile: { foo: 'bar' },
  photos: ['a.jpg', 'b.jpg'],
  books: [
    { title: 'JavaScript 高级程序设计', author: 'Nicholas C. Zakas' },
    { title: '深入浅出 Node.js', author: '朴灵' }
  ],
  petId: '5f9435332105b51bea352660'
});

user.save((err) => {
  if (err) {
    console.error('保存用户失败:', err);
  } else {
    console.log('保存用户成功!');
  }
});

UserModel.find((err, users) => {
  if (err) {
    console.error('查询用户列表失败:', err);
  } else {
    console.log('用户列表:', users);
  }
});

UserModel.findById('5f9435332105b51bea352660', (err, user) => {
  if (err) {
    console.error('查询用户失败:', err);
  } else {
    console.log('用户:', user);
  }
});

UserModel.updateOne({ _id: '5f9435332105b51bea352660' }, { name: '李四' }, (err) => {
  if (err) {
    console.error('更新用户失败:', err);
  } else {
    console.log('更新用户成功!');
  }
});

UserModel.deleteOne({ _id: '5f9435332105b51bea352660' }, (err) => {
  if (err) {
    console.error('删除用户失败:', err);
  } else {
    console.log('删除用户成功!');
  }
});

在上面的示例中,我们使用了各种不同类型的 SchemaTypes,对模型实例进行了增删改查的操作。

总结

本文介绍了 Mongoose 中常见的 SchemaTypes,包括了 String、Number、Date、Buffer、Boolean、Mixed、ObjectId 和 Array,以及如何使用它们来创建模型实例并进行增删改查的操作。

通过本文的学习,我们可以更好地理解 Mongoose 中的 SchemaTypes,从而更高效地开发和管理 MongoDB 数据库。

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