Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在Express中编写一个函数,在作为API调用时可以返回JSON,但在没有Axios/Fetch的情况下也可以在内部调用?_Node.js_Express - Fatal编程技术网

Node.js 如何在Express中编写一个函数,在作为API调用时可以返回JSON,但在没有Axios/Fetch的情况下也可以在内部调用?

Node.js 如何在Express中编写一个函数,在作为API调用时可以返回JSON,但在没有Axios/Fetch的情况下也可以在内部调用?,node.js,express,Node.js,Express,甚至不确定描述它的最佳方式,但基本上我在Express控制器中有一个函数,位于/api/lookupJobName,它接受查询参数Q,这是一个数字,然后做一些后台工作(连接到Salesforce,查找作业号,获取其实际名称),并返回一个json对象,如下所示: oppName = { name: "whateverCameBack" } res.json(oppName) 非常简单,我这样创建它是因为当一些客户端JS在表单中输入数字时,会调用它 现在,我在项目中走得更远了,我需要再次快速地从作

甚至不确定描述它的最佳方式,但基本上我在Express控制器中有一个函数,位于/api/lookupJobName,它接受查询参数Q,这是一个数字,然后做一些后台工作(连接到Salesforce,查找作业号,获取其实际名称),并返回一个json对象,如下所示:

oppName = { name: "whateverCameBack" }
res.json(oppName)
非常简单,我这样创建它是因为当一些客户端JS在表单中输入数字时,会调用它

现在,我在项目中走得更远了,我需要再次快速地从作业编号中获取作业名称,但这都是服务器端的。我认为重新编写本质上相同的代码,或者使用Axios根据我自己的API调用函数(这是额外的流量,get需要代理有点混乱),没有意义,但我不能直接调用模块,因为它会抛出错误,因为我使用res.json发回数据


我可以重复使用API中的代码吗?或者我需要为我的特定目的编写一份代码副本吗?

您可以编写一个模块,将核心功能导出为一个简单的函数。此模块又可以由

  • 您的express api
  • 您制作的cli工具(例如)

  • 因此,您的api和cli只是围绕实际功能的薄层,不应该了解任何有关cli或express的信息。

    如果我理解正确,那么您可以使用模块!这是假设您的第二次使用在同一台服务器上。如果不是,那么你需要做些别的事情

    //fn.js
    module.exports=函数doStuff(作业ID){
    const whateverCameBack=剂量测量(jobId);
    返回{name:whateverCameBack}
    }
    //app.js
    var doStuff=要求('./fn');
    app.get('api/jobs/:id',函数(req、res、next){
    doStuff(要求参数id)
    .then(x=>res.json(x))//假设它是异步的
    .然后(下一步);
    });
    //服务器中的其他位置
    var doStuff=需要('./fn');
    
    doStuff(jobId).then(oppName=>//随便什么)谢谢!感谢代码示例-我想这正是我需要的,干杯!