Tipo de esquema de mangosta

Mongoose es un modelado y manejo de objetos MongoDB para el entorno node.js.

Mongoose Schematype es una configuración para el modelo Mongoose. Antes de crear un modelo, siempre necesitamos crear un esquema. SchemaType especifica qué tipo de objeto se requiere en la ruta dada. Si el objeto no coincide, arroja un error. El SchemaType se declara de la siguiente manera:

const schema = new Schema({
    name: { type: String },
    age: { type: Number, default: 10 }, 
});

Tipos de datos compatibles con SchemaType:

  • Cuerda
  • Número
  • Fecha
  • Buffer
  • booleano
  • Mezclado
  • ID de objeto
  • Formación
  • decimal128
  • Mapa
  • Esquema

Propiedades de SchemaType

  • tecla de tipo : necesitamos especificar el tipo de objeto que se requiere guardar en el documento. El tipo se especifica de la siguiente manera:
const studentSchema = new Schema({
    name: { type: String }, // String type

    // Has a default value of numerical type
    age: { type: Number, default: 8},

    // Containing Date of birth as Date object 
    dob: { type: Date }, 
    skills: [{ type: String }] ,// Array of strings
});
  • options : Podemos especificar diferentes opciones para un Esquema. Se enumeran de la siguiente manera:
    • requerido : Toma un valor booleano o una función. Si se especifica con booleano, se le agrega el validador requerido.
    • predeterminado : toma cualquier tipo de datos o una función. Establece un valor predeterminado para la ruta dada.
    • select : toma un valor booleano y especifica la proyección predeterminada para las consultas.
    • validar : Acepta una función que valida los datos suministrados a la ruta.
    • get : defina una función getter personalizada usando Object.defineProperty().
    • set : defina una función de establecimiento personalizada mediante Object.defineProperty().
    • alias : especifica un nombre virtual para las funciones get y set.
    • immutable : toma un tipo de valor booleano y mongoose evita cambiar la ruta inmutable hasta que el padre se especifique como isNew=true.
    • transform : requiere una función que se usa para personalizar la función JSON.stringify().
  • Índices : podemos definir los índices para las opciones de esquema de la siguiente manera:
    • índice : toma un tipo de valor booleano y especifica si la ruta dada es el índice o no.
    • único : toma un tipo de valor booleano y especifica si la ruta dada es un índice único o no. Si es cierto, el índice no está obligado a mencionar.
    • sparse : toma un tipo de valor booleano y especifica si la ruta dada es el índice disperso o no.
  • String : el tipo de string tiene las siguientes funciones:
    • minúsculas : toma un tipo de valor booleano y especifica si ejecutar la función toLowerCase() en el valor.
    • uppercase : toma un tipo de valor booleano y especifica si ejecutar la función toUpperCase() en el valor.
    • trim : toma un tipo de valor booleano y especifica si ejecutar la función trim() en el valor.
    • match : tiene un RegExp que actúa como validador del valor.
    • enum : toma una array y verifica si el valor está en la array y crea un validador.
    • minLength : especifica la longitud mínima de la string y crea un validador.
    • maxLength : especifica la longitud máxima de la string y crea un validador.
    • populate : toma un objeto y establece el valor predeterminado para completar las opciones.
  • Número : El tipo de número tiene las siguientes funciones:
    • min : especifica el valor mínimo y crea un validador.
    • max : especifica el valor máximo y crea un validador.
    • enum : toma una array y verifica si el valor está en la array y crea un validador.
    • populate : toma un objeto y establece el valor predeterminado para completar las opciones.
  • Fecha : El tipo de fecha tiene las siguientes funciones:
    • min : especifica la fecha mínima y crea un validador.
    • max : especifica la fecha máxima y crea un validador.
  • ObjectId : tiene la función de llenado que toma un objeto y establece el valor predeterminado para completar las opciones.

Ejemplo : en el siguiente ejemplo, crearemos un SchemaType para un estudiante que contendrá los campos nombre, edad, habilidades y fecha de nacimiento. Luego lo guardaremos en MongoDB usando mongoose. En este ejemplo se utilizan Node.js y NPM, por lo que es necesario instalarlos.

Paso 1: crea una carpeta e inicialízala:

npm init

Paso 2: Instale mongoose en el proyecto.

npm i mongoose

La estructura del proyecto es la siguiente:

 

Paso 3: Cree un archivo llamado index.js. Dentro de index.js, conéctese a MongoDB. Aquí se utiliza MongoDB Compass. Primero, cree el Esquema, luego el Modelo a partir del Esquema y asígnele el nombre Estudiante. Finalmente, cree un documento del modelo Student y guárdelo en la base de datos usando la función save().

index.js

const mongoose = require("mongoose");
  
// Database connection
mongoose.connect("mongodb://localhost:27017/geeksforgeeks", {});
  
// Creating Schema
const studentSchema = new mongoose.Schema({
  name: { type: String, required: true },
  age: { type: Number, default: 8 },
  skills: [{ type: String }],
  dob: { type: Date },
});
  
// Student model
const Student = mongoose.model("Student", studentSchema);
  
// Creating Student document from Model
let student1 = new Student({
  name: "GFG",
  age: 12,
  skills: ["Drawing", "Craft", "Football"],
  dob: new Date("2010-08-08"),
});
// Saving to database
student1.save().then(async (doc) => {
  if (doc) {
    console.log("The student data saved successfully");
  }
});

Paso 4: Ahora ejecute el código usando el siguiente comando en la Terminal/Símbolo del sistema para ejecutar el archivo.

node index.js

Salida: La salida del código es la siguiente:

 

Y el documento en MongoDB es el siguiente:

 

Referencia: https://mongoosejs.com/docs/schematypes.html

Publicación traducida automáticamente

Artículo escrito por manavsarkar07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *