es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Modificando los datos que se pasan al esquema de Mongoose

Estoy pasando datos a un esquema de mongoose que se ve así:

iceCreamType:{
label: "Fresa",
value: "fresa"
}

Estos datos provienen de un componente react-select.
Ahora quiero modificar los datos de la siguiente manera antes de enviarlos a la base de datos de MongoDB:

iceCreamType: "fresa"

Así que solo quiero enviar el valor a MongoDB.

¿Cómo puedo lograr esto dentro del esquema de mongoose?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    En tu esquema de mongoose, puedes definir una función personalizada para establecer el valor del campo iceCreamType que modificará los datos antes de guardarlos en la base de datos.

    Aquí tienes un ejemplo de cómo puedes implementarlo:

    const iceCreamSchema = new mongoose.Schema({
      iceCreamType: {
        type: String,
        set: function (value) {
          // Comprobar si el valor es un objeto (del componente react-select)
          if (typeof value === 'object' && value.value) {
            return value.value;
          } else {
            return value;
          }
        },
      },
    });
    
    

    En el ejemplo anterior, definimos una función personalizada para establecer el valor del campo iceCreamType utilizando la opción set en la definición del campo. La función verifica si el valor pasado es un objeto con una propiedad value (que es el formato devuelto por react-select), y si es así, devuelve la propiedad value. De lo contrario, devuelve el valor original pasado.

    Ahora, cada vez que crees o actualices un documento utilizando este esquema de mongoose, el campo iceCreamType se modificará automáticamente para contener solo la propiedad value del objeto react-select.

    “`javascript
    const iceCream = new IceCream({
    iceCreamType: {
    label: ‘Fresa’,
    value: ‘fresa’,
    },
    });

    iceCream.save();
    // El campo iceCreamType contendrá ‘fresa’ en la base de datos

Comments are closed.