Полное руководство по полю номера телефона Mongoose: методы и примеры

В этой статье блога мы рассмотрим различные методы и примеры кода для реализации поля номера телефона с помощью Mongoose, популярного инструмента объектного моделирования для MongoDB на JavaScript. Мы рассмотрим методы проверки, форматирования и хранения телефонных номеров в ваших схемах Mongoose.

  1. Определение схемы Mongoose:
    Для начала давайте определим схему Mongoose с полем номера телефона. Мы можем использовать конструктор mongoose.Schemaдля создания схемы и использовать встроенные возможности проверки Mongoose.
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
  phoneNumber: {
    type: String,
    validate: {
      validator: function (value) {
        // Custom validation logic for phone numbers
      },
      message: 'Invalid phone number format.',
    },
  },
});
const User = mongoose.model('User', userSchema);
  1. Базовая проверка.
    Для проверки форматов номеров телефонов вы можете использовать регулярные выражения или специализированные библиотеки, такие как libphonenumber-js. Вот пример использования библиотеки libphonenumber-js:
const PhoneNumber = require('libphonenumber-js');
const userSchema = new mongoose.Schema({
  phoneNumber: {
    type: String,
    validate: {
      validator: function (value) {
        return PhoneNumber.isValidNumber(value, 'US'); // Validate US phone numbers
      },
      message: 'Invalid phone number format.',
    },
  },
});
  1. Форматирование номеров телефонов.
    Возможно, вы захотите хранить номера телефонов в стандартном формате независимо от того, как их вводят пользователи. Вот пример использования библиотеки libphonenumber-jsдля форматирования телефонных номеров перед сохранением их в базе данных:
const PhoneNumber = require('libphonenumber-js');
const userSchema = new mongoose.Schema({
  phoneNumber: {
    type: String,
    validate: {
      validator: function (value) {
        return PhoneNumber.isValidNumber(value, 'US');
      },
      message: 'Invalid phone number format.',
    },
    set: function (value) {
      const formattedNumber = PhoneNumber.format(value, 'International');
      return formattedNumber; // Store formatted phone number
    },
  },
});
  1. Пользовательская проверка.
    Вы можете реализовать собственную логику проверки для телефонных номеров, используя функцию validateMongoose. Вот пример проверки определенного префикса номера телефона:
const userSchema = new mongoose.Schema({
  phoneNumber: {
    type: String,
    validate: {
      validator: function (value) {
        return value.startsWith('+1'); // Check if phone number starts with "+1"
      },
      message: 'Invalid phone number format.',
    },
  },
});
  1. Хуки предварительного сохранения.
    Вы также можете использовать хуки предварительного сохранения Mongoose для выполнения дополнительных операций или изменений в поле номера телефона перед сохранением его в базе данных. Вот пример удаления всех нецифровых символов из номера телефона:
const userSchema = new mongoose.Schema({
  phoneNumber: {
    type: String,
    validate: {
      validator: function (value) {
        // Custom validation logic
      },
      message: 'Invalid phone number format.',
    },
  },
});
userSchema.pre('save', function (next) {
  this.phoneNumber = this.phoneNumber.replace(/\D/g, ''); // Remove non-digit characters
  next();
});

Реализация поля номера телефона с помощью Mongoose включает проверку, форматирование и, возможно, изменение данных номера телефона перед сохранением их в базе данных. Следуя методам и примерам, приведенным в этой статье, вы можете быть уверены, что поля вашего номера телефона правильно обрабатываются в ваших схемах Mongoose.

Не забудьте импортировать необходимые библиотеки, такие как mongooseи libphonenumber-js, чтобы эффективно использовать примеры кода.