在Node JS中检索特定的JSON数据

时间:2018-01-03 06:33:49

标签: javascript json node.js

我是Angular JS和Node JS的新手。我在服务器端有几个JSON文件(语言翻译)。根据客户端请求,我需要检索JSON文件的数据。如果用户请求法语,我需要检索该特定JSON文件的数据。这是我基于搜索尝试的。它不起作用。有人可以用正确的方法帮助我吗?

function getTranslations (
  request /* : Request<null, {
    nextToken?: string
  }, {}> */,
  response /* : Object */
)  {
  request.headers = request.headers || {}
  return authentication.authenticate(request.headers.authorization)
    .then((tokenPayload) => authorisation.authorise(tokenPayload.username, permissions.TRANSLATE))
    .then((authorised) => {
      if (!authorised) {
        return Promise.reject(boom.forbidden('Message'))
      }

    const options = {  
        url: 'files/translations/',
        method: 'GET',
        headers: {
            'Accept': 'application/json',
            'Accept-Charset': 'utf-8',
        }
    };

    app.get("/:getValue", function(req, res)  { 
    request(options, function(err, response, body) {  
        var json = JSON.parse(body);
        console.log(json); 
        res.json(request.json) 
    });    
    });

    app.listen(3000, function() {  
        console.log("My API is running...");
    });

    })
}

1 个答案:

答案 0 :(得分:1)

嗯,有很多方法可以解决这个问题。我会对你的问题做一些假设,但不清楚。首先,我假设有很多json文件,如en.json用于英语,fr.json用于法语等。

现在,如果用户请求“英语”,他应该获取en.json的数据。对于fr.json也一样。

您可以使用以下内容创建名为translation.js的文件:

module.exports = {
    ENGLISH: require('./en.json'),
    FRENCH: require('./fr.json')
};

然后在您的路由器中,您可以根据传递的参数发送数据:

//app.js
var translation = require('./translation.js');

app.get(/:value, (req, res) => {
    if (req.params.value === 'french') {
        return res.status(200).json(translation.FRENCH);
    }

    return res.status(200).json(translation.ENGLISH);
});

或者你可以使用i18n包 - https://github.com/mashpie/i18n-node