[英]Object not deleting on DELETE request
我是 node.js 的新手,試圖從 DELETE 請求中的 JSON 文件中刪除一個對象我已經編寫了這段代碼,但仍然沒有從 JSON 文件中刪除該對象。
const express = require('express');
const fs = require('fs');
const app = express();
app.use(express.json());
const cars = JSON.parse(fs.readFileSync(`${__dirname}/Data/cars.json`))
const deleteCar = (req, res)=>{
const id = req.params.id * 1
let Acar = cars.find(el => el.id === id);
if(!Acar){
return res.status(404).json({
status : "failed",
message : "request not found"
})
}
fs.writeFile(`${__dirname}/Data/cars.json`, JSON.stringify(cars), err=>{
res.status(204).json({
status : "success",
data : {
car : cars.splice(Acar, 1)
}
})
})
};
app.delete('/api/v1/cars/:id', deleteCar)
const port = 2000
app.listen(port, ()=>{
console.log(`listening at port ${port}`);
})
在寫入文件之前,您似乎並未真正從汽車數組中刪除該項目。 看起來您從“err”回調中的數組中刪除了該項目,這意味着它只會在寫入失敗時刪除它。
我不確定splice(Acar,1)
如果 Acar 是對象本身,而不是索引。 下面的代碼應該可以工作。
// ...
cars.splice(cars.indexOf(ACar, 1))
// fs.write etc.
那是因為您沒有編寫任何代碼來將其從文件中刪除。
const del_index = cars.findIndex(el => el.id === id);
cars.splice(del_index, 1)
findIndex將幫助您,而不是使用 find,因為您將使用索引進行拼接,而且您還需要在將汽車保存到 json 文件之前進行拼接
如果您使用204狀態代碼,則不會響應任何內容
const express = require('express');
const fs = require('fs');
const app = express();
app.use(express.json());
const cars = JSON.parse(fs.readFileSync(`${__dirname}/Data/cars.json`))
const deleteCar = (req, res) => {
const id = req.params.id * 1
let car_index = cars.findIndex(el => el.id === id);
if (car_index === -1) {
return res.status(404).json({
status: "failed",
message: "request not found"
})
}
cars.splice(car_index, 1)
fs.writeFile(`${__dirname}/Data/cars.json`, JSON.stringify(cars), err => {
res.status(204).json(cars)
})
};
app.delete('/api/v1/cars/:id', deleteCar)
const port = 2000
app.listen(port, () => {
console.log(`listening at port ${port}`);
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.