返回空数据,多个app.get()

我必须在/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数据。
为什么?

阅读 1.7k
1 个回答

因为路由 app.get('/:id')将你的 /deleteUser请求捕获了!
不信,你把get by id那个路由移到所有路由之后再看。
:id可不仅仅是表示数字!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题