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.

Cómo crear un esquema anidado en Nodejs

nombre: “Salman”,
proteína: 23,
hidratos de carbono: 23,
calorías: 1221,
grasas: 12,
ingredientes: {
sal: “1 cucharadita”,
// …
}

Quiero un esquema así, ¿cómo puedo crear un esquema de esto con Mongoose de NodeJS? También, ¿cómo puedo agregar datos en este esquema anidado? porque estoy recibiendo un error.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear un esquema para la estructura de datos proporcionada con Mongoose, puede comenzar definiendo un nuevo esquema con los campos requeridos y sus respectivos tipos de datos. Puede usar el tipo de datos Schema.Types.Mixed para manejar el campo ingredients, que contiene un objeto anidado. Aquí hay un ejemplo de definición de esquema:

    const mongoose = require('mongoose');
    
    const mealSchema = new mongoose.Schema({
      name: { type: String, required: true },
      protein: { type: Number, required: true },
      carbs: { type: Number, required: true },
      calorie: { type: Number, required: true },
      fats: { type: Number, required: true },
      ingredients: { type: mongoose.Schema.Types.Mixed }
    });
    
    const Meal = mongoose.model('Meal', mealSchema);
    module.exports = Meal;
    

    Para agregar datos al campo anidado ingredients, puede usar el método updateOne de Mongoose y la notación de puntos para acceder a las propiedades anidadas. Aquí hay un ejemplo:

    const meal = await Meal.findOne({ name: 'salman' });
    await meal.updateOne({ 'ingredients.salt': '1 teaspoon', 'ingredients.sugar': '2 tablespoons' });
    

    Esto agregará una nueva propiedad sugar al objeto ingredients con el valor de '2 tablespoons'. Si está obteniendo un error al intentar agregar datos al esquema anidado, podría deberse a nombres de propiedad incorrectos o tipos de datos. Asegúrese de que la definición del esquema coincida con los datos que se están pasando.

Comments are closed.