使用json获取基于id的用户

时间:2016-06-23 18:43:54

标签: json node.js

我想根据id从json文件中获取一个用户,下面的内容仅在id有序时才有效

 router.get('/:id', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
    people = JSON.parse( data );

    var user =  people.users[req.params.id]
    if (err) {
        res.status = 500;
        res.send(err).end();
        return;
    }
    console.log( user );
    res.end( JSON.stringify(user));
});
})

json:

{"users[{"firstname":"stoffel","lastname":"clement","id":9},{"firstname":"stoffel","lastname":"clement","id":1},{"firstname":"liam","lastname":"murphy","id":"2"},{"firstname":"stoffel","lastname":"murphy","id":"3"}]}

2 个答案:

答案 0 :(得分:0)

您的代码正在通过 index 访问users数组。您想通过id进行搜索。 (当您的users数组按照id排序时,数组中的位置将与id匹配(假设您使用的是零索引),这就是它工作的原因。)< / p>

如果您使用的是像lodash这样的库,您可以执行类似......

的操作

var user = _.find(users, ['id', req.params.id])

答案 1 :(得分:-1)

你的JSON看起来很时髦。我认为你需要一个结束引号和冒号后用户部分,即

{"users": [{"firstname":"stoffel","lastname":"clement","id":9},{"firstname":"stoffel","lastname":"clement","id":1},{"firstname":"liam","lastname":"murphy","id":"2"},{"firstname":"stoffel","lastname":"murphy","id":"3"}]};