Mongoose Schema

Как писалось ранее, Schema - "строго-типизированное" определение документа определенной коллекции.

Кроме определения типа данных определенного поля, Schema также позволяет установить следующие опции поля:

  • указать, обязательное поле для документа или нет (required)

  • задать значение по умолчанию (default)

  • если числовой тип данных или дата - задать минимальное и максимальное значения (min, max)

  • если срочный тип - задать приведения значения к нижнему/верхнему регистру перед сохранением (lowercase / uppercase)

  • создать кастомную функцию валидации поля (validate)

  • создать кастомные геттер и сеттер поля (get, set)

  • создать псевдонимы поля (alias)

  • задать значение поля, как уникальное всех документов коллекции (unique) и т. д.

Подробнее об опциях схем можно почитать здесь.

Пример монгус-схемы:

const { Schema } = require('mongoose');

const userSchema = new Schema({
    first_name: String,
    email: {
        type: String,
        required: true,
        alias: 'login',
        validate: (value) => value.includes('@'),
        unique: true,
    },
    age: {
        type: Number,
        required: true,
        min: 18,
        max: 95,
    },
    last_name: {
        type: String,
        default: 'Ivanov',
        get: (v) => v.toUpperCase(),
    }
});

Last updated