有没有一种方法可以在REST API中访问Express的应用程序?

查看Massive的文档 ,保存数据库连接执行时间的方法是将连接对象保存一次到Express的应用程序设置。 我的问题是,如何在REST API模块化时访问Express的应用程序variables? 问题的一个例子:

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); }); } 

我在RequestHandler中检查了这个对象,这个对象似乎不是Express的应用程序对象。 也检查了req和res参数,看起来像Express的app对象也不在那里。


谢谢@robertklep

Express TypeScript定义不会更新。 为了TypeScript用户的利益,只需通过索引器访问应用程序。 这工作:

 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'); 

它作为req.appres.app都可用。

Interesting Posts