" Un curso de código abierto que estoy tomando tiene el siguiente aviso para el desarrollo completo: 3.17 : Base de datos de la agenda telefónica, paso 5 Si el usuario intenta crear una nueva entrada en la agenda telefónica para una persona cuyo nombre ya está en la agenda telefónica, la interfaz intentará actualizar el número de teléfono de la entrada existente realizando una solicitud HTTP PUT a la URL única de la entrada. Modifique el backend para admitir esta solicitud. Verifique que el frontend funcione después de realizar los cambios". *
Parece que esto requeriría una solicitud express app.put llamada dentro de una solicitud app.post. ¿Hay algo que me estoy perdiendo aquí? ¿Cómo maneja este tipo de lógica con mongoDB/mongoose/express? Mi código postal actual se pega a continuación.
Gracias
app.post('/api/persons',(req,res) => { const body = req.body const containsNameNumber = body.name && body.number if(!containsNameNumber){ return res.status(400).json({ error:"must specify a name and a number" }) } const phone = new Person({ name: body.name, number:body.number }) phone.save().then(savedPerson => { res.json(savedPerson) }) })Creo que está malinterpretando una cosa, verifique la definición PUT de RFC7231
El método
PUTsolicita que el estado del recurso de destino se cree o se reemplace con el estado definido por la representación incluida en la carga útil del mensaje de solicitud.
Es importante la parte "crearse". Entonces, con un PUT , si el recurso existe, se actualizará, pero si no existe, se creará.
Si el recurso de destino no tiene una representación actual y
PUTcrea una con éxito, entonces el servidor de origen DEBE informar al agente de usuario enviando una respuesta201 (Created).
Entonces solo tiene que hacer una llamada PUT y verificar si existe para actualizar (devuelve 200 Ok ) o no existe para crear (devuelve 201 Created ).