更新 MongoDB 中的数字时出现错误请求错误

Getting bad request error when updating a number in MongoDB

我试图更新存储在 mongodb 中的单个元素(这是一个数字)。 这是我发送给数据库的请求:

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);
      })
}

MongoDB里面存储的数据是数组的一个对象。为了执行我尝试用 express 构建 API 的操作。 这是 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);      
 });

每当我点击更新按钮时,它都会显示一条错误消息:

PUT(link)400 (bad request)
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

这应该适合你:

在你请求正文中这样做:

body : JSON.stringify({quantity: final})

相反,将对象作为字符串发送:

res.send(result);

像这样作为 JSON 发送:

res.status(200).json(result);

为了让您的客户更好地捕捉到您的服务抛出的错误,请将闭包 catch 添加到提取中。