Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

178
Vistas
mangosta obtener datos del método de búsqueda e insertarlos en otro esquema

Estoy tratando de construir una aplicación web.

En el sitio web, necesito obtener datos del instructor de mongodb con mongoose y algunos de ellos se insertarán en otro esquema (Curso).

 if (!req.body) return console.log("No data sent"); var newcourse; var iname = req.body.iname; var results; /*ilist.find({ name: iname }).toArray((err, result) => { if (err) return console.log(err); results = result; });*/ dbs.collection('instructors').find({ name: iname }).toArray((err, result) => { results = result; //console.log(result); }); // console.log(ilist.data); newcourse = new clist({ 'coursename': req.body.coursename, 'coursenumber': req.body.coursenumber, 'coursecredit': req.body.coursecredit , 'courseroom': req.body.room, 'instructors.name': req.body.iname, 'instructors.email': results.email, 'instructors.phone': results.phone, 'instructors.role': req.body.role }); newcourse.save(function (err) { if (err) { console.log(err); res.status(400); res.send(err); } else { res.status(200); console.log('A new course has been registered!'); res.redirect('/course'); } });

-----esquema-------------------

 var instructorlist = mongoose.Schema({ name: { type: String, required: true }, age: { type: Number, required: true }, gender: { type: String, required: true }, DOB: { type: Date, required: true, default: Date.now }, email: { type: String, required: true }, phone: { type: Number, required: true }, address: { type: String, required: true }, dateofstart: { type: Date, required: true}, courses: { coursename: { type: String, required: false }, coursenumber: { type: Number, requird: false }, coursecredit: { type: Number, required: false }, courseroom: { type: String, required: false } } }); var courselist = mongoose.Schema({ coursename: { type: String, required: true }, coursenumber: { type: String, required: true }, coursecredit: { type: Number, required: true }, courseroom: { type: String, required: false }, courseregisteddate: {type: Date, default: Date.now}, students: { name: { type: String, required: false }, phone: { type: Number, requird: false }, email: { type: String, required: false }, class: { type: String, required: false } }, instructors: { name: { type: String, required: false }, phone: { type: Number, requird: false }, email: { type: String, required: false }, role: { type: String, required: false } } });

Quiero obtener el correo electrónico y el teléfono de Instuctorlist (otros son de req.body) y ponerlo en la variable newcourse para guardarlo en mongodb. Gracias por leerlo.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La función de búsqueda de instructores se llamará de forma asíncrona, por lo que el código JavaScript continuará antes de que tenga los resultados de esa consulta de mangosta.

Debe agregar el guardado del curso dentro de la devolución de llamada. Podría verse así:

 if (!req.body) return console.log("No data sent"); dbs.collection('instructors').find({ name: req.body.iname }).toArray((err, instructors) => { if (!err) { if (!instructors) { var newcourse = new clist({ // new data also from instructors }); newcourse.save(function(err) { if (err) { res.status(400); res.send(err); } else { res.status(200); res.redirect('/course'); } }); } else { res.status(400); res.send("Could not find instructor"); } } else { res.status(400); res.send(err); } });

Pero tenga en cuenta que con esto obtiene todos los instructores con el nombre dado y debe seleccionar uno de esa matriz. Si desea guardar más cursos para un instructor, debe cambiar el esquema: por ejemplo

 var courseSchema = mongoose.Schema({ // Schema variables ... }); var courseModel = mongoose.model("Course", courseSchema); var instructorlist = mongoose.Schema({ name: { type: String, required: true }, ... courses: [{ type: ObjectId, ref: "Course" }] });

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda