node.js - 获取ID的方法

时间:2016-06-27 11:15:19

标签: node.js http angular

我有一个node.js服务器从user.json文件接收数据

  var express     =   require("express");
    var app         =   express();
    var bodyParser  =   require("body-parser");
    var router      =   express.Router();
    var cors        = require('cors')
    var fs          = require("fs");
    app.use(cors());
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({"extended" : false}));

    app.get('/listUsers', function (req, res) {
       fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
           //console.log( data );

           res.end( data );
       });
    })



var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("Example app listening at http://%s:%s", host, port)

})

user.json:

    {   "data": [
   {
      "name" : "mahesh",
      "password" : "password1",
      "profession" : "teacher",
      "id": 1
   },
  {
      "name" : "suresh",
      "password" : "password2",
      "profession" : "librarian",
      "id": 2
   },
    {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",
      "id": 3
   }
]
}

如您所见,get请求显示路由/ listUsers上的所有用户。 现在我想通过ID获取它们删除特定用户。

网址应如下所示:/ listUsers / id

但由于我对此很陌生,我实际上不知道该怎么做。

我的想法是,我首先需要读取整个文件,然后以某种方式将ID设置为URL。 但是我怎么能这样做呢? 是否在执行函数之前发送请求? 所以当我这样做时:

app.get('/listUsers/{this.id}'. function(req,res){ 
fs.readFile(_dirname + "/" + "users.json", "utf8", function(err, data) {
res.end( data )
id = this.data.id
}}

它无效。 我实际上不想使用mongoDB或其他东西,我希望这只与nodejs服务器一起用于测试目的,如果可能的话。 有什么想法/建议吗?

1 个答案:

答案 0 :(得分:3)

app.get方法有一个技巧。路径字符串可能包含前缀为冒号的参数。这些被放入req.params对象。

var _ = require('lodash');

app.get('/user/:id', function(req, res) {
  fs.readFile(_dirname + "/" + "users.json", "utf8", function(err, data) {
    var allUsers = JSON.parse(data).data;
    res.end( JSON.stringify(_.find(allUsers, function(o) { return o.id == req.params.id })) )
  }
}

我使用lodash来简化users.json文件中给定用户的搜索。