在函数中封装node.js代码

时间:2018-01-06 17:21:11

标签: node.js function

到目前为止,我有以下代码,我需要从JSON对象获取id:

var http = require("http");
var fs = require('fs');
//var bodyParser = require("body-parser");
//var moment = require("moment");

var options =  {
    "method" : "GET",
    "hostname" : "xxx.xxx.xxx.xxx",
    "port" : "18080",
    "path" : "/api/v1/applications/"
};

var req = http.request(options, function (res) {

    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function () {
        var body = JSON.parse(Buffer.concat(chunks));

        var arrFound = Object.keys(body).filter(function(key) {
            if (body[key].name.indexOf("TestName") > -1) {
                return body[key].name;
            }
        }).reduce(function(obj, key){
            obj = body[key].id;
            return obj;
        }, {});;
        //console.log("Name: ", arrFound);
        console.log("ID: ", arrFound);
    });
});

req.end();

我知道它正在读取id,因为我现在把它写到控制台(console.log(“ID:”,arrFound);)。

我想要做的是将其用于我程序的其他部分。我假设我需要做一些事情,比如将它封装在我可以调用的函数中,但node.js对我来说是新的,我不完全确定如何/做什么。

有人可以建议如何做到这一点或指向一些可能有帮助的资源吗?

1 个答案:

答案 0 :(得分:1)

您应该研究模块模式和导出。你是对的,基本的想法是将你的代码导出为一个函数。根据您的处理方式,它应该采用回调函数。我已经用你所拥有的东西做了一个天真的尝试。

注意我将null作为第一个参数传递给回调函数。在节点中使用回调时使用第一个参数进行错误是常规的。您可能需要一些错误处理。

话虽如此,你晚上会看一些像请求或ES6获取功能这样的库。这些将允许您更整洁地组织代码。你可能会使用promises而不是回调。

exports.getId(function(err, id){
    console.log(id)
})

你这样称呼它:

{{1}}