鍍金池/ 問答/HTML/ 返回空數(shù)據(jù),多個app.get()

返回空數(shù)據(jù),多個app.get()

我必須在/deleteUser 之前重新定義一個Express的類,然后才能確保下面讀取的值不為空值。
全部代碼如下

/*server.js*/
var express = require('express');    // 引入express框架
var app = express();
var fs = require('fs');     // 引入文件模塊

// 添加用戶的數(shù)據(jù)
var user = {
    "user4": {
        "name":"mohit",
        "password":"password4",
        "profession":"teacher",
        "id":4
    }
}

// 創(chuàng)建獲取用戶列表路由
app.get('/listUsers', (req, res) => {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', (err, data) => {
       console.log( data );
       res.end( data );
   });
})

// 創(chuàng)建添加用戶路由請求
app.get('/addUser', (req, res) => {
    // 讀取已存在的數(shù)據(jù)
    fs.readFile( __dirname + "/" + "users.json", "utf8", (err, data) => {
        if (err) {
            return console.log(err);
        };

        data = JSON.parse(data);    // 將傳入的JSON轉(zhuǎn)換為對象格式
        data["user4"] = user["user4"];    
        console.log(data);
        res.end( JSON.stringify(data) );    // 將對象轉(zhuǎn)換成為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數(shù)據(jù)。
為什么?

回答
編輯回答
遺莣

因為路由 app.get('/:id')將你的 /deleteUser請求捕獲了!
不信,你把get by id那個路由移到所有路由之后再看。
:id可不僅僅是表示數(shù)字!

2017年6月7日 20:44