Estaba tratando de actualizar un solo elemento (que es un número) que está almacenado en mongodb. aquí está la solicitud que envié a la base de datos:
const handleDelivered = (num) =>{ const total = service.quantity; const final = parseInt(total) + num; console.log(total,final); const url = `http://localhost:5000/services/${idOfService}`; fetch(url,{ method :'PUT', headers :{ 'content-type': 'application/json', }, body : JSON.stringify(final) }) .then(res => res.json()) .then(product =>{ console.log(product); }) }Los datos almacenados dentro de MongoDB son un objeto de la matriz. para ejecutar la operación intenté construir una API con express. aquí está el código para la API
app.put('/services/:id', async(req,res)=>{ const id = req.params.id; const filter = {_id : ObjectId(id)}; const options = { upsert: true }; const updatedData = req.body; const updateDoc = { $set: { quantity : updatedData.quantity, }, }; const result = await serviceCollection.updateOne(filter, updateDoc, options); res.send(result); });Cada vez que hago clic en el botón para actualizar, aparece un error que dice:
PUT(link)400 (bad request) Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0Esto debería funcionar para usted:
En su cuerpo de solicitud, haga esto:
body : JSON.stringify({quantity: final})En su lugar, envíe un objeto como una cadena con:
res.send(result);Enviar como un JSON así:
res.status(200).json(result); Y para que su cliente detecte mejor el error que arroja su servicio, agregue la catch de cierre a la búsqueda.