Sigo recibiendo un error: TypeError: Cannot read property 'doors' of null . Quiero poder configurar doors para que sean anulables, para poder evitar este error y simplemente presionar la respuesta de error y devolver 404. Sin embargo, no estoy seguro de cómo hacer esto.
Aquí está mi código:
Data.findOne({ '_id':'6182544c20d538aefe49def0', 'doors.id':doorId }, { 'doors.$':1 }, function(err, data) { if (err) { res.status(404).send('No Matching Door Found') } else if (data.doors[0].status === 'open') { res.status(401).send('Door already unlocked') } else { res.status(200) } }) El error aparece en la tercera línea, donde no puede encontrar un objeto de puerta donde el ID sea igual a doorId .
Intenté configurar doors.id en !doors.id , sin embargo, esto siguió presionando el 404 independientemente de lo que se estaba ingresando. Cualquier ayuda se agradece, gracias.
Bueno, parece que toda su consulta es incorrecta. Sugeriría primero probar esta consulta para sus necesidades:
Data.findOne({ '_id':'6182544c20d538aefe49def0', 'doors.id':doorId }, { 'doors.$':1 }).exec(function(err, data) { if (err) { res.status(404).send('No Matching Door Found') } else if (data.doors[0].status === 'open') { res.status(401).send('Door already unlocked') } else { res.status(200) } })Entonces te recomiendo que leas más sobre MongoDB y Mongoose.