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

618
Vistas
Mongoose - CastError Cast a cadena falló para el valor "Objeto"

Tengo un problema con Mongoose CastError. Hice una API de nodeJs. En la ruta específica, devuelve datos adjuntos con algunos otros datos. Vi muchas correcciones disponibles aquí, pero mi escenario es diferente.

Aquí está mi modelo y el problema ocurre en la propiedad de los campos.

 const deviceSchema = new Schema({ device_id: { type: String, required: true }, user_id: { type: Schema.Types.ObjectId, ref: 'User', require: true }, location_latitude: { type: String, default: '0' }, location_longitude: { type: String, default: '0' }, fields: [{ type: String }], field_id: { type: Schema.Types.ObjectId, ref: 'Field', required: true }, timestamp: { type: Date, default: Date.now, }, });

y mi controlador es

 exports.getAllDevices = async (req, res) => { try { let devices = await Device.find({}) .sort({ timestamp: 'desc', }) .populate('user_id', ['name']); // Let us get the last value of each field for (let i = 0; i < devices.length; i++) { for (let j = 0; j < devices[i].fields.length; j++) { if (devices[i].fields[j] !== null && devices[i].fields[j] !== '') { await influx .query( `select last(${devices[i].fields[j]}), ${devices[i].fields[j]} from mqtt_consumer where topic = '${devices[i].device_id}'` ) .then((results) => { ************** Problem occurs here ************** if (results.length > 0) { devices[i].fields[j] = { name: devices[i].fields[j], last: results[0].last, }; } else { devices[i].fields[j] = { name: devices[i].fields[j], last: 0, }; } ************** Problem occurs here ************** }); } } } // Return the results res.status(200).json({ status: 'Success', length: devices.length, data: devices, }); } catch (err) { console.log(err); res.status(500).json({ error: err, }); } };

En realidad, obtiene datos de InfluxDB y los agrega a la propiedad de campos que se obtuvo de MongoDB como se menciona en mi modelo. Pero se negó a agregar y se produce CastError.

Después de la adición, se verá así

ingrese la descripción de la imagen aquí

No puedo resolver este error después de intentar tantas correcciones. No se donde me equivoque. Por favor sugiérame alguna solución para esto.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puedo ver que no está utilizando la variable de devices como Mongoose Document . devices es una matriz de Documentos .

Me gustaría sugerirle que use la función lean () para convertir de Documento a objeto JavaScript simple como

 let devices = await Device.find({}) .sort({ timestamp: 'desc', }) .populate('user_id', ['name']) .lean();
about 4 years ago · Juan Pablo Isaza 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