我必须在/deleteUser 之前重新定义一个Express的类,然后才能确保下面读取的值不为空值。
全部代码如下
/*server.js*/
var express = require('express'); // 引入express框架
var app = express();
var fs = require('fs'); // 引入文件模块
// 添加用户的数据
var user = {
"user4": {
"name":"mohit",
"password":"password4",
"profession":"teacher",
"id":4
}
}
// 创建获取用户列表路由
app.get('/listUsers', (req, res) => {
fs.readFile( __dirname + "/" + "users.json", 'utf8', (err, data) => {
console.log( data );
res.end( data );
});
})
// 创建添加用户路由请求
app.get('/addUser', (req, res) => {
// 读取已存在的数据
fs.readFile( __dirname + "/" + "users.json", "utf8", (err, data) => {
if (err) {
return console.log(err);
};
data = JSON.parse(data); // 将传入的JSON转换为对象格式
data["user4"] = user["user4"];
console.log(data);
res.end( JSON.stringify(data) ); // 将对象转换成为JSON格式
});
});
// 添加显示用户详情路由
app.get('/:id', (req, res) => {
// 首先读取已存在的用户
fs.readFile( __dirname + '/' + "users.json", 'utf8', (err, data) => {
data = JSON.parse( data );
var user = data["user" + req.params.id] // 获取get得到的值
console.log( user );
res.end( JSON.stringify(user) );
})
})
var app = express();
// 删除用户
app.get('/deleteUser', (req, res) => {
// 首先获取用户信息
fs.readFile( __dirname + "/" + "users.json", 'utf8', (err, data) => {
data = JSON.parse( data );
delete data["user" + 2];
console.log( data );
res.end( JSON.stringify(data));
});
})
// 启动server
var server = app.listen(1937, () => {
console.log(server.address());
})
删除用户之前的
var app = express();
必须存在,去掉就会全部返回undefined,读不到data数据。
为什么?
因为路由
app.get('/:id')
将你的/deleteUser
请求捕获了!不信,你把get by id那个路由移到所有路由之后再看。
:id
可不仅仅是表示数字!