簡體   English   中英

POST http://localhost:3000/updateSurvey 400(錯誤請求)

[英]POST http://localhost:3000/updateSurvey 400 (Bad Request)

在用戶完成一些任務后,我正在嘗試更新 mongoDB 中的集合。 但是,每當我嘗試保存信息並更新 mongo 時,都會收到錯誤POST http://localhost:3000/updateSurvey/634124db6f 400 (Bad Request) 任何想法為什么我的代碼無法正常運行?

后端js腳本

app.post('/updateSurvey', async (req, res) => {
try {
    await client.connect();
    var db = client.db('Admin_Db');
    var collection = db.collection('Survey');

    await collection.findOneAndUpdate({"_id": ObjectId(req.body.id)}, {completion: req.body.completion});
    res.send("updated");
} catch (error) {
    console.log(error);
    res.status(400).send(error);
}
});

Main.js(這就是我從 mongo 獲取數據的方式)

fetch("http://localhost:3000/updateSurvey", {
method:'POST', 
headers:{'Content-Type': 'application/json'}, 
body: JSON.stringify({id: surveyID, completion: true})})
.then(response=>{response.text()})
.catch(function(err){console.log("Fetch Problem: " + err)});

您的服務器上沒有公開路由http://localhost:3000/updateSurvey/634124db6f 因此出現 404 錯誤。 由於您使用的是 post 調用,因此在使用 fetchAPI 進行 post 調用時只需在您的 body 中傳遞surveyID ,而不是將其作為查詢參數發送。

並確保http://localhost:3000/updateSurvey是您發送數據的路徑,URL 中沒有surveyId。

編輯

根據評論中收到的請求進行的編輯。

collection.findOneAndUpdate({"_id": id)}, {completion: req.body.completion});

應該:

collection.findOneAndUpdate({"_id": new ObjectId(id))}, {completion: req.body.completion});

_id 是 MongoDB 中的 ObjectId 類型。 您將 id 作為字符串傳遞。 這很可能是我可以通過您問題中共享的代碼收集到的錯誤。 您可以使用 Mongo Driver for node 提供的 ObjectId class 將字符串轉換為 ObjectId。 甚至 mongoose 也提供了這個 class。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM