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

621
Views
TypeError: no se puede leer la propiedad '0' de undefined en el método de publicación en nodejs

Soy nuevo en nodejs y mongodb. Estoy tratando de crear una aplicación simple para hacer con nodejs y mongodb. He agregado la tarea en la base de datos. Ahora, en el método de publicación, estoy usando el método insertOne de mongodb y en res.json tengo el siguiente error.

res.json(info.ops[0].data)
TypeError: no se puede leer la propiedad '0' de indefinido

Código:

 app.post('/create-item', function(req, res){ db.collection('items').insertOne({ text:req.body.text }, function(err, info){ res.json(info.ops[0]) }) })

A continuación se muestra la captura de pantalla de Error.Captura de pantalla de error

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

En las versiones actuales, no se devuelve ninguna propiedad llamada ops cuando insertOne tiene éxito.

De ahí el error TypeError: Cannot read property '0' of undefined

insertOne devuelve dos propiedades:

acknowledged
Indica si este resultado de escritura fue reconocido. De lo contrario, todos los demás miembros de este resultado no estarán definidos.
insertedId
El identificador que se insertó. Si el servidor generó el identificador, este valor será nulo ya que el controlador no tiene acceso a esos datos.

Ver:

  • Insertar uno
  • Insertar un resultado
 app.post('/create-item', function(req, res){ db.collection('items').insertOne({ text:req.body.text }, function(err, info){ console.log(info.acknowledged) console.log(info.acknowledged) res.json(info.acknowledged) }) })

En versiones anteriores, por ejemplo 3.2 , se devolvían diferentes propiedades para insertOne :

  • insertOne @3.2
  • insertOneWriteOpCallback @3.2

De manera similar, se devolvieron diferentes propiedades para updateOne :

  • actualizar uno @ 3.2
  • actualizarOneWriteOpCallback @ 3.2

Para obtener más información sobre cómo migrar a la versión 4 desde versiones anteriores, consulte el artículo:

Cambios en 4.x (¡y cómo migrar!)

over 4 years ago · Santiago Trujillo Report

0

Encontré el mismo problema con el tutorial de la aplicación de tareas pendientes hoy. Para aquellos interesados, intente cambiar la línea: res.json (info.ops [0])

a - res.json({ _id: info.insertedId.toString(), texto: req.body.text })

Esto obtiene la identificación insertada de la base de datos para el elemento recién agregado. Como "información" no parece devolver el texto insertado en la versión actual de mongodb, lo agregué desde el parámetro de solicitud.

Obtuve mi información de aquí: obtenga el _id del documento insertado en la base de datos de Mongo en NodeJS

over 4 years ago · Santiago Trujillo Report

0

lo está haciendo de manera incorrecta, primero verifique el error y luego envíe el res.json porque el error se debe a que su información podría ser nula si los datos no se insertaron correctamente, por lo que debe hacerlo así

 app.post('/create-item', function(req, res){ db.collection('items').insertOne({ text:req.body.text }, function(err, info){ if (err) { res.json({message: "not inserted successFully"}); return; } res.json(info.ops[0]) }) })

Ahora, en el código anterior, ¿qué sucederá si los datos no se insertan correctamente? Enviará el error como respuesta y regresará de la función.

over 4 years ago · Santiago Trujillo 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!