删除 JSON 文件中的元素
Deleting an element in a JSON file
我刚刚开始我的第一个项目,正在学习如何编码。我已将所有用户保存在一个名为 storage.JSON 的 JSON 文件中,并且我有关于在本地存储中以名称“currentUser”登录的用户的信息。我正在尝试创建一个按钮,用户可以在其中从 JSON 文件中删除自己。当我在整个过滤过程中控制日志时,它会起作用。在我看来,问题在于问题无法在 if 语句之外捕获 allUsers 变量。谁能帮我解决这个问题,这样我就可以将 allUsers 发送回函数末尾的 API。
这是我在 API 中的代码:
app.delete('/deleteProfile', (req, res) => {
var allUsers = JSON.parse(fs.readFileSync("storage.JSON"))
res.json(allUsers)
})
app.post('/deleteProfile', (req, res)=> {
let reqData = req.body;
console.log('Post request virker')
console.log(reqData)
var storage = JSON.parse(fs.readFileSync("storage.JSON"))
storage.push(reqData);
fs.writeFileSync("storage.JSON", JSON.stringify(storage, null, 2));
//console.log(reqData);
res.send(JSON.stringify({mesagge: 'This user has been delete from', storage}));
})
deleteUser.js
中的代码
deleteUser = document.getElementById("deleteBtn")
deleteUser.addEventListener('click', function() {
const xhr = new XMLHttpRequest();
xhr.responseType = "json"
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
var allUsers = this.response;
console.log(allUsers);
let currentUser = JSON.parse(localStorage.getItem("currentUser"))
allUsers = allUsers.filter(allUser => allUser.username !== currentUser.username);
console.log(allUsers);
} });
xhr.open("DELETE", "http://localhost:2500/deleteProfile", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(allUser));
})
您应该在 if 块范围之外定义 allUsers
变量,并在 if 块中设置该数据。
在 deleteUser.js
:
试试这个
deleteUser = document.getElementById("deleteBtn")
deleteUser.addEventListener('click', function() {
let allUsers;
const xhr = new XMLHttpRequest();
xhr.responseType = "json"
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
allUsers = this.response;
let currentUser = JSON.parse(localStorage.getItem("currentUser"))
allUsers = allUsers.filter(allUser => allUser.username !== currentUser.username);
} });
xhr.open("DELETE", "http://localhost:2500/deleteProfile", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(allUser));
})
我刚刚开始我的第一个项目,正在学习如何编码。我已将所有用户保存在一个名为 storage.JSON 的 JSON 文件中,并且我有关于在本地存储中以名称“currentUser”登录的用户的信息。我正在尝试创建一个按钮,用户可以在其中从 JSON 文件中删除自己。当我在整个过滤过程中控制日志时,它会起作用。在我看来,问题在于问题无法在 if 语句之外捕获 allUsers 变量。谁能帮我解决这个问题,这样我就可以将 allUsers 发送回函数末尾的 API。
这是我在 API 中的代码:
app.delete('/deleteProfile', (req, res) => {
var allUsers = JSON.parse(fs.readFileSync("storage.JSON"))
res.json(allUsers)
})
app.post('/deleteProfile', (req, res)=> {
let reqData = req.body;
console.log('Post request virker')
console.log(reqData)
var storage = JSON.parse(fs.readFileSync("storage.JSON"))
storage.push(reqData);
fs.writeFileSync("storage.JSON", JSON.stringify(storage, null, 2));
//console.log(reqData);
res.send(JSON.stringify({mesagge: 'This user has been delete from', storage}));
})
deleteUser.js
中的代码deleteUser = document.getElementById("deleteBtn")
deleteUser.addEventListener('click', function() {
const xhr = new XMLHttpRequest();
xhr.responseType = "json"
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
var allUsers = this.response;
console.log(allUsers);
let currentUser = JSON.parse(localStorage.getItem("currentUser"))
allUsers = allUsers.filter(allUser => allUser.username !== currentUser.username);
console.log(allUsers);
} });
xhr.open("DELETE", "http://localhost:2500/deleteProfile", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(allUser));
})
您应该在 if 块范围之外定义 allUsers
变量,并在 if 块中设置该数据。
在 deleteUser.js
:
deleteUser = document.getElementById("deleteBtn")
deleteUser.addEventListener('click', function() {
let allUsers;
const xhr = new XMLHttpRequest();
xhr.responseType = "json"
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
allUsers = this.response;
let currentUser = JSON.parse(localStorage.getItem("currentUser"))
allUsers = allUsers.filter(allUser => allUser.username !== currentUser.username);
} });
xhr.open("DELETE", "http://localhost:2500/deleteProfile", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(allUser));
})