Aparece un mensaje que indica que no se pueden configurar encabezados después de que ya se hayan configurado. Mi intercepción de código para el método de colocación enviado en la URL, luego verifica la identificación faltante, luego verifica si ningún campo ingresado no está definido, luego realiza el método de captura de prueba dentro del cual se actualiza para la identificación dada. Si la identificación no es correcta, responde con un error. mi código es:
.put(async function (req, res){ console.log(req.body._id + " is id.") const {_id, issue_title, issue_text, created_by, assigned_to, status_text, open} = req.body; if(!_id){ res.json({error: "missing _id"}) } const fields = {issue_title, issue_text, created_by, assigned_to, status_text, open} const checkAllUndefined = Object.values(fields).every(val => (val == undefined || val == '')? true: false) if(checkAllUndefined){ res.json({ error: 'no update field(s) sent', _id}) } else{ try{ await db.findOneAndUpdate({_id: new mongodb.ObjectID(_id)}, {$set: {issue_title,issue_text,created_by, assigned_to, status_text, open, updated_on: new Date()}}, { new: true, omitUndefined: true }) res.json({ result: 'successfully updated', _id}) }catch(err){ res.json({ error: 'could not update', _id}) } } })¡Su primera instrucción If está devolviendo la respuesta si _id no está definido!
if(!_id){ res.json({error: "missing _id"}) }¡Después de enviar esta respuesta, se ejecuta el siguiente bloque if o su bloque else, lo que lleva a enviar otra respuesta que no es posible o no está permitida! Tienes que anidar el bloque if else como este
put(función asíncrona (req, res) {
console.log(req.body._id + " es id.")
const {_id, título_problema, texto_problema, creado_por, asignado_a, texto_estado, abierto} = req.cuerpo;
si yo d) {
res.json({error: "falta _id"})
} más {
si (marcarTodosIndefinidos) {
res.json({error: 'no se enviaron campos de actualización', _id})
} más {
probar {
esperar db.findOneAndUpdate({_id: nuevo mongodb.ObjectID(_id)}, {
$establecer:
{
título_problema, texto_problema, creado_por, asignado_a, texto_estado, abierto,
actualizado_en: nueva Fecha()
}
}, {
nuevo: cierto,
omitir indefinido: verdadero
})
res.json({resultado: 'actualizado con éxito', _id})
} atrapar (err) {
res.json ({error: 'no se pudo actualizar', _id})
}
}
}
)
}
al hacer esto, solo está enviando la respuesta una sola vez.