В этой статье мы рассмотрим различные методы извлечения необходимых полей схемы в массив с помощью Mongoose и TypeScript. Мы предоставим примеры кода и пояснения, которые помогут вам понять различные подходы, которые вы можете использовать. Итак, приступим!
Метод 1: использование метода Object.keys()
Самый простой способ извлечь необходимые поля схемы в массив — использовать метод Object.keys(). Этот метод возвращает массив имен собственных перечислимых свойств данного объекта. В нашем случае мы можем использовать его для получения имен полей из схемы.
import { Schema } from 'mongoose';
const schema = new Schema({
name: { type: String, required: true },
age: { type: Number, required: true },
email: { type: String, required: true },
});
const requiredFields = Object.keys(schema.obj).filter((field) => {
return schema.obj[field].required;
});
console.log(requiredFields);
Метод 2: использование свойства schema.paths
Другой подход — использовать свойство pathsсхемы. Это свойство содержит объект, который сопоставляет имена полей с соответствующими типами схем. Мы можем перебирать этот объект и отфильтровывать обязательные поля.
import { Schema } from 'mongoose';
const schema = new Schema({
name: { type: String, required: true },
age: { type: Number, required: true },
email: { type: String, required: true },
});
const requiredFields = Object.keys(schema.paths).filter((field) => {
return schema.paths[field].isRequired;
});
console.log(requiredFields);
Метод 3: использование свойства schema.tree
Свойство treeсхемы обеспечивает вложенное объектное представление полей схемы. Мы можем использовать это свойство для извлечения необходимых полей в массив.
import { Schema } from 'mongoose';
const schema = new Schema({
name: { type: String, required: true },
age: { type: Number, required: true },
email: { type: String, required: true },
});
const requiredFields = Object.keys(schema.tree).filter((field) => {
return schema.tree[field].required;
});
console.log(requiredFields);
В этой статье мы рассмотрели три различных метода извлечения необходимых полей схемы в массив с помощью Mongoose и TypeScript. Для достижения нашей цели мы использовали метод Object.keys(), свойство schema.pathsи свойство schema.tree. У каждого метода есть свои преимущества, поэтому выберите тот, который соответствует вашему конкретному случаю использования. Приятного кодирования!