📜  mongoose id 验证器 - Javascript (1)

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

Mongoose ID 验证器 - Javascript

在Mongoose中,我们可以使用Mongoose ID验证器来确保我们的模型实例属性是有效的MongoDB ObjectIds。 这个验证器可以被用来确保你的模型只接受MongoDB的ObjectIds,而不是其他类型的值。

安装

您需要先安装Mongoose才能使用Mongoose ID验证器。 您可以通过以下命令在您的项目中安装它:

npm install mongoose
使用方法

使用Mongoose ID验证器很简单。 你只需要在模式定义中将验证器添加到你的模型实例属性中。 例如,假设您有一个名为User的模型,并且您希望确保_id属性始终是MongoDB的ObjectIds您可以按照以下方式定义您的模式:

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

const UserSchema = new Schema({
  _id: {
    type: Schema.Types.ObjectId,
    default: () => new mongoose.Types.ObjectId(),
    required: true,
    validate: {
      validator: (value) => {
        return mongoose.Types.ObjectId.isValid(value);
      },
      message: "Invalid ObjectId",
    },
  },
  name: String,
});

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

module.exports = User;

现在你的User模型会在保存时验证_id字段是否是一个有效的MongoDB ObjectIds。 如果不是,则会抛出一个ValidationError。

验证器选项

Mongoose ID验证器有几个选项可用于自定义验证器的行为。 下面是一些最常用的选项:

  • required: 如果设置为true,则该属性是必需的。 如果未设置_id字段,则Mongoose将自动为其生成一个MongoDB生成的ObjectId。 如果未设置default值,则会获得一个随机的ObjectId。 默认为 false
  • validate: 验证器功能接受一个名为value的参数,该参数是待验证属性的值。 验证器功能应该返回一个布尔值,如果该属性是有效的MongoDB ObjectIds,则返回true,否则返回false。 如果验证器函数返回false,则将抛出一个ValidationError。 如果验证器返回一个字符串,则它将被作为错误消息使用。
  • message: 如果validate选项失败,将使用该字符串作为错误消息返回。
结论

Mongoose ID验证器是一个非常有用的工具,可以帮助您保护您的MongoDB数据库免受来自无效ObjectId的错误请求。 此外,它还可以确保您的模型只接受MongoDB的ObjectIds,而不是其他值。