将node.js代码封装在函数中

将node.js代码封装在函数中,node.js,function,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" : "1808

到目前为止,我有以下代码需要从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:,arrfund);)

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


有人能告诉我怎么做,或者给我指一些可能有用的资源吗?

你应该研究模块模式和导出。没错,基本思想是将代码作为函数导出。根据您处理这个问题的方式,应该使用回调函数。我对你所拥有的东西做了天真的尝试

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

话虽如此,您还是可以查看一些库,如请求或ES6 fetch函数。这将允许您更整洁地组织代码。你可能最终会使用承诺而不是回调

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/"
};
exports.getId = function(callback) {
    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);
        callback(null, arrFound));
    });
});

    req.end();
}
你这样称呼它:

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

你想重用什么代码,整个代码块还是JSON解析/过滤?我只想在需要的时候随时获取id,因为回调是老派的,have
getId
返回一个
Promise
,这样调用代码就可以使用
async
/
wait
。我在have对代码做了最低限度的处理!如果询问者调查fetch,他们将得到基于承诺的解决方案!谢谢各位。我会调查这些。我想我还有点书要读。我假设我可以运行类似console.log(exports.getId())的东西;但是这抛出了“TypeError:callback不是一个函数:”我遗漏了什么吗?看了这一点,我是否正确地认为我可能接近console.log(exports.getId());但我必须传递一些值。如果是这样的话,我不确定那可能是什么。看看变化。