Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

606
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda