私は新しくExpressです。Express Router.useミドルウェア
DB内の値に基づいてリクエストをルーティングしようとしています。これを行うには、私はサービス機能を呼び出すことです。 ルーティングは正常に動作していますが、要求オブジェクトが失われています。 reqをサービスに渡そうとしましたが、機能しませんでした。
これを行う方法を示す助けがあればいいですね。
ここは私のコードブロックです。
var companyService = require("services/companyService");
router.use('/', function (req, res, next) {
companyService.isCompanyOnline(req.body.companyCode).then(function (company) {
if (company) {
router.use('/', require("api/controllers/online"));
}
else {
router.use('/', require("api/controllers/offline"));
}
});
next();
});
module.exports = router;
Services.companyService:
function isCompanyOnline(code) {
var deferred = Q.defer();
companies.findOne({ companyCode: code }, function (err, company) {
if (err) deferred.reject(err.name + ': ' + err.message);
//if (err) throw err;
if (company) {
// return company online parameter
deferred.resolve(company.isOnline);
} else {
// company not found
deferred.resolve();
}
});
return deferred.promise;
}
**:
まず、ルート定義:ルータのURLを変更すると
を'req'オブジェクトを失う?あるいは、 'req'オブジェクトにはどこにアクセスしようとしていますか? – tmslnz
@tmslnzを 'api/controllers/online'または' api/controllers/online'ルートに追加します。 –
さて、返信するには – tmslnz