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

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

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 Relatório

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 Relatório

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 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