【发布时间】:2017-11-26 08:02:17
【问题描述】:
我正在使用 node.js 和 typescript 开发一个应用程序。我按照本文中概述的方法 http://brianflove.com/2016/11/08/typescript-2-express-node/ 对 server.ts 文件进行了模式化,以下是 server.ts 文件的示例代码:
import * as bodyParser from "body-parser";
import * as cookieParser from "cookie-parser";
import * as express from "express";
import * as logger from "morgan";
import * as path from "path";
import errorHandler = require("errorhandler");
import methodOverride = require("method-override");
/**
* The server.
*
* @class Server
*/
export class Server {
public app: express.Application;
/**
* Bootstrap the application.
*
* @class Server
* @method bootstrap
* @static
* @return {ng.auto.IInjectorService} Returns the newly created injector for this app.
*/
public static bootstrap(): Server {
return new Server();
}
/**
* Constructor.
*
* @class Server
* @constructor
*/
constructor() {
//create expressjs application
this.app = express();
//configure application
this.config();
//add routes
this.routes();
//add api
this.api();
}
/**
* Create REST API routes
*
* @class Server
* @method api
*/
public api() {
//empty for now
}
/**
* Configure application
*
* @class Server
* @method config
*/
public config() {
//empty for now
}
/**
* Create router
*
* @class Server
* @method api
*/
public routes() {
//empty for now
}
}
这里是路由函数的示例代码:
/**
* Create router.
*
* @class Server
* @method config
* @return void
*/
private routes() {
let router: express.Router;
router = express.Router();
//let mymodel = this.connection.model<IMyModel>("MyModel", MySchema);
//let myservice: MyService = new MyService(this.myRepository(mymodel));
//IndexRoute
IndexRoute.create(router, myservice);
//use router middleware
this.app.use(router);
}
对于我的特定场景,我将服务注入到路由中以执行可能需要执行的适当操作。这是我关心的问题,如果我以这种方式将服务注入控制器。这是否意味着每个发出请求的人都会收到不同的服务和存储库或相同的实例?理想情况下,我想如果每个用户收到不同的实例会更好。这将如何影响在存储库层中进行的数据库调用?我是 node.js 的新手,但我仍在尝试理解 app.js、server.js 和请求之间的关系,因为 node.js 是单线程的。
【问题讨论】:
标签: node.js typescript repository-pattern service-layer