node.js - Finns det ett sätt för mig att komma åt Express Application i ett REST API?
Genom att titta på Massives dokumentation är sättet att spara databasanslutningens exekveringstid att spara anslutningsobjektet en gång i Express applikationsinställningar. Min fråga är, hur får man åtkomst till Express app-variabeln när REST API:et är modulärt uppdelat? Ett exempel på problemet:
app.ts:
import express = require('express');
import greeter = require('./api/greeter');
var app = express();
app.get('/api/greeter', greeter.get);
greeter.ts:
import express = require("express");
function get(req: express.Request, res: express.Response, next: Function): any
{
// The this object seems not the Express's app object.
// console.log(this)
// How to access Express's app variable here?
// var db = app.get('db');
db.item.findOne({item_id : 1}, (err, item) => {
res.json(item);
});
}
Jag kontrollerade detta objekt i get RequestHandler, detta objekt verkar inte vara Express app-objekt. Kontrollerade också req- och res-parametrarna, det verkar som Express app-objektet inte heller finns där.
Tack @robertklep
Express TypeScript-definitionen är inte uppdaterad. För TypeScript-användarnas skull, använd bara appen via indexer. Detta fungerar:
import express = require("express");
export function get(req: express.Request, res: express.Response, next: Function): any {
var app : express.Application = req["app"];
var db = app.get('db');
Svar #1
Den finns tillgänglig som både req.app och res.app.