Метод обновления данных MongoDB, показывающий внутреннюю ошибку сервера - PullRequest
0 голосов
/ 16 июня 2020

Я использую mongoDB в качестве базы данных в одном из моих проектов reactjs. Но не может обновить / изменить уже загруженные данные. При попытке обновить мои данные отображается ошибка. Как решить эту проблему.

enter image description here

Внешний интерфейс

<TableBody>
       {
         appointment.map((appointment) => (
           <TableRow key={appointment._id}>
             <TableCell component="th" scope="row" align="center">
               {appointment.details.name}
             </TableCell>
             <TableCell align="center">{appointment.details.time}</TableCell>
             <TableCell align="center">
               <Select
                  value={action}
                  onChange={handleChange}
               >
                    <MenuItem onClick={() => setId(appointment._id)} value={"notVisited"}>Not Visited</MenuItem>
                    <MenuItem onClick={() => setId(appointment._id)} value={"visited"}>Visited</MenuItem>
               </Select>
             </TableCell>
           </TableRow>
          ))
        }
 </TableBody>

Функция handleChange

const handleChange = (event) => {
    setAction(event.target.value);
    fetch("http://localhost:4000/modifyAppointmentByKey", {
        method: "post",
        headers: {
            "Content-type": "application/json"
        },
        body: JSON.stringify({action: action, _id: id})
    })
    .then(response => response.json())
    .then(data => {
        console.log("modify done");
    })
}

Бэкенд

app.post('/modifyAppointmentByKey', (req, res) => {
const _id = req.body._id;
const action = req.body.action;
client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
     const collection = client.db("doctorsPortal").collection("appointment");
     collection.updateOne({"_id": objectId(_id)}, {$set: action}, (err, result)=>{
         if(err){
            res.status(500).send({message:err});
         }
         else{
             console.log("done");
             res.send(documents);
         }
     })
     client.close();
  });
});

1 Ответ

0 голосов
/ 16 июня 2020

Можно ли получить какие-либо данные с серверной части? Если нет, то я предполагаю, что при обращении к бэкэнду возникла проблема из-за политики CORS.

Просто попробуйте использовать это промежуточное ПО в своем бэкэнде, чтобы предоставить необходимые разрешения -

app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', '*');
    if (req.method === 'OPTIONS') {        
        res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
     }
    return next();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...