简体   繁体   English

收到HTTP请求后,使用express.js执行函数吗?

[英]Using express.js to execute a function after receiving an http request?

So I have an angular controller that successfully makes an http request after a button is pressed. 因此,我有一个角度控制器,可以在按下按钮后成功发出http请求。 I have a node.js server running which gets the request and then sends back YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED! 我有一个正在运行的node.js服务器,该服务器获取请求,然后将其发送回YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED! YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED! . I want to execute a function when the request is received, but the function lives in a file inside a folder which is in ./Source/Server/test.js . 我想在收到请求时执行一个函数,但是该函数位于./Source/Server/test.js文件夹中的文件中。

How do I tell my server.js file to send the command to run the function??? 如何告诉我的server.js文件发送命令以运行该函数???

server.js: server.js:

var express = require('express');
var app = express();
var fs = require('fs');
app.use(express.static(__dirname + '/Source/Client/Templates'));
app.use(express.static(__dirname + '/'));
app.get('/', function (req, res) {
    res.sendFile('/Source/Client/Templates/Home.html', {root: __dirname });
});
app.get('/ThisIsATest', function (req, res) {
  res.send('YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED!')
})
app.listen(3000);
console.log("running at port 3000");

test.js: test.js:

var run = require('./quickstart.js');
run.runQuickstart();

Controller: 控制器:

angular.module('DaycareApp').controller('WaitingListController', ['$scope', '$http', function($scope, $http){
    $scope.test = function() {
        $http.get('/ThisIsATest')
        .then(function(response) {
            alert(response.data);
        });
    };
}]);

You can require test.js as a file after exposing the necessary functions, like this: 公开必要的功能后,可以将test.js作为文件,如下所示:

// test.js
// ========
var run = require('./quickstart.js');

module.exports = {
  run: function () {
    run.runQuickstart();
  }
};

In server.js , require it: server.js中 ,要求它:

var test = require('./Source/Server/test');

and use it with: test.run() . 并用于: test.run()

In test.js you can export your module like this 在test.js中,您可以像这样导出模块

var run = require('./quickstart.js');

function mySpecialFunction() {
    return run.runQuickstart();
}

module.exports = {
    mySpecialFunction: mySpecialFunction
};

Now in your server.js or wherever your controller is you can call the function by inluding test.js in your module using require. 现在,在server.js或控制器所在的任何位置,您都可以通过使用require将test.js插入模块中来调用该函数。

var test = require('./test.js');

app.get('/ThisIsATest', function (req, res) {
  res.send(test.mySpecialFunction());
});

Could you do something like: 你能做点什么:

server.js server.js

var express = require('express');
var app = express();
var fs = require('fs');
var run = require('./path/to/quickstart.js');

// ...

app.get('/ThisIsATest', function (req, res) {
  run.runQuickstart();
  res.send('YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED!')
})

// ...

And then in test.js: 然后在test.js中:

var run = require('./quickstart.js');

exports.runQuickstart = function() {
  run.runQuickstart();
};

You can require the file 您可以要求文件

var outsideFunction  = require(__dirname + '/Source/Server/test.js');

then add it to the route. 然后将其添加到路线。

app.get('/ThisIsATest', function (req, res) {
      outsideFunction(req, res);
      res.send('YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED!')
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM