В этой статье блога мы рассмотрим различные методы и примеры кода для реализации поля номера телефона с помощью Mongoose, популярного инструмента объектного моделирования для MongoDB на JavaScript. Мы рассмотрим методы проверки, форматирования и хранения телефонных номеров в ваших схемах Mongoose.
- Определение схемы 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);
- Базовая проверка.
Для проверки форматов номеров телефонов вы можете использовать регулярные выражения или специализированные библиотеки, такие как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.',
},
},
});
- Форматирование номеров телефонов.
Возможно, вы захотите хранить номера телефонов в стандартном формате независимо от того, как их вводят пользователи. Вот пример использования библиотеки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
},
},
});
- Пользовательская проверка.
Вы можете реализовать собственную логику проверки для телефонных номеров, используя функцию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.',
},
},
});
- Хуки предварительного сохранения.
Вы также можете использовать хуки предварительного сохранения 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, чтобы эффективно использовать примеры кода.