Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

596
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!