私はエクスプレス4.0を使用しており、ミドルウェアをチェーンするのに問題があります。私は2つのルーターを持っています:ジョブルーターとリクルータールーター。 現時点ではすべてうまく動作しています(私はこれらのルータの両方でCRUDを使用できます)が、募集ルータを使用してメソッドを呼び出すためのPOSTメソッドが必要で、これを実現する方法がわかりません。ルータを使ってミドルウェアをチェーンする方法
ルータ/ recruiter.js:
var express = require('express');
var router = express.Router();
/* GET recruiters listing. */
router.get('/', function(req, res, next) {
var recruiters = [];
//get recruiters
res.json(recruiters);
});
function(err, req, res, next) {
console.info("pseudo code for a function I'd like to call in the job.js file");
});
module.exports = router;
ルータ/ job.js:
var express = require('express');
var uuid = require('uuid4');
var router = express.Router();
var jobs = [];
/* GET job listing. */
router.get('/', function(req, res, next) {
jobs = [];
//get jobs
res.json(jobs);
});
/* add jobs . */
router.post('/', function(req, res, next) {
console.info('add job', req.body);
var body = req.body;
//I omit the parts where I check the req and save the object
//At the moment I do this but I'd like to call a method within the recruiter router before sending the json back to the client.
res.json({'jobs': []});
});
module.exports = router;
、ここではapp.jsで関連部品です:
var job = require('./routes/job');
var recruiter = require('./routes/recruiter');
app.use('/job', job);
app.use('/recruiter', recruiter);
呼び出すコードを独自の関数に入れ、その関数を2か所から呼び出します。 2つのルート間で共通のコードを共有するためにExpressインフラストラクチャを使用する必要はありません。共通のコードを共有するには、単純なJSプログラミング手法を使用してください。 – jfriend00
あなたの説明は私の最初の実装でしたが、これを行うにはもっと "明白な"方法が必要であるとわかりました。 –
何らかの未知の理由から、人々は、共有コードを速やかに行うべきであると思うことに悩まされ、これが唯一の方法です。ここに投稿した他の人や、自分のコードを書くときに私が見たような感覚を知っています。しかし、名前付き関数に共通コードを置き、2つの場所から呼び出すことはこれを解決する一般的な方法であり、Expressは実際にはより良い置換を提供しません。 – jfriend00