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.