【发布时间】:2018-11-01 10:55:55
【问题描述】:
所以基本上,我有一个由用户和组数据组成的 JSON 文件。我想删除一个特定的组。这是我的 JSON 文件的样子: authdata.json:
[{
"name": "Allan",
"role": ["Group Admin", "Super Admin"],
"group": ["Cool-Group", "ss"]
}, {
"name": "super",
"group": ["Nerd Group"],
"role": ["Super Admin"]
}, {
"name": "Terry",
"role": ["Group Admin"],
"group": ["Cool-Group"]
}, {
"name": "Kaitlyn",
"role": ["Group Admin"],
"group": ["Nerd-Group"]
}, {
"name": "Alex",
"role": ["Group Admin"],
"group": ["Cool-Group"]
}]
我只是对如何在 nodeJS 中处理 http 删除请求感到困惑? 这是我的角度组件如何将请求发送到服务器: remove.component.ts:
RemoveGroup() {
this.httpService.delete < any > (this.apiURL + 'deletegroup', {
group: this.groups
}).subscribe(
data => {
if (data['success'] == true) {
alert(data.group + " is removed");
} else {
alert("No groups found");
}
},
(err: HttpErrorResponse) => {
console.log(err.message);
}
);
}
这是 NodeJS 上的服务器端(读取 json 文件,将数据分配给变量,尝试删除组(这对我不起作用)并写回 JSON 文件): 删除组.js:
app.delete('/api/deletegroup', (req, res) => {
// localhost:3000/api/auth?username=Terry
var groups = req.body.group;
var userObj;
fs.readFile('authdata.json', 'utf8', function(err, data) {
if (err) {
console.log(err);
//Some error happended opening the file. No Success
res.send({
'group': '',
'success': false
});
} else {
userObj = JSON.parse(data);
for (let i = 0; i < userObj.length; i++) {
for (let j = 0; i < userObj.length; j++) {
if (userObj[i].group[j] == groups) {
userObj.splice(userObj.indexOf(groups), 1);
//find first instance of user name and success
}
}
}
var newdata = JSON.stringify(userObj);
fs.writeFile('authdata.json', newdata, 'utf-8', function(err) {
if (err) throw err;
//Send response that registration was successfull.
res.send({
'group': groups,
'success': true
});
});
//no username was found that matched
}
});
});
【问题讨论】:
-
在你的循环中,你有
if (userObj[i].group[j] == groups)。groups设置在哪里,它设置成什么? -
groups 基本上是在 html 文件中传递的输入(用户输入组名),并且 ngModel 设置为组,该组获取 html 中输入字段的值并将其分配给变量组。现在,如果您看一下上面的 RemoveGroup() 函数,就会在 httpService.delete 请求参数中传递组。
标签: javascript arrays node.js json angular