【发布时间】:2018-09-01 08:36:36
【问题描述】:
我正在尝试将 express-session 与 NestJS 框架中的 typeorm 存储相结合。因此我写了一个 NestMiddleware 作为 express-session 的包装器(见下文)。当我启动节点时,NestJS 会记录以下内容
错误信息:
UnhandledPromiseRejectionWarning:未处理的承诺拒绝 (拒绝 id:1):错误:Nest 无法解析 会话中间件(?)。请验证 [0] 参数是否可用 在当前上下文中。
Express 没有启动(连接被拒绝),但是创建了 Sqlite DB(应该存储会话)(也是一个会话表,但不是列)。
在我看来,使用 nestjs/typorm-Module 中的 @InjectRepository 解决依赖关系时似乎存在一个特殊问题。有人有提示吗?
代码:
import { Middleware, NestMiddleware, ExpressMiddleware } from '@nestjs/common';
import * as expressSession from 'express-session';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { TypeormStore } from 'connect-typeorm';
import { Session } from './session.entity';
@Middleware()
export class SessionMiddleware implements NestMiddleware {
constructor(
@InjectRepository(Session)
private readonly sessionRepository: Repository<Session>
) {}
resolve(): ExpressMiddleware {
return expressSession({
store: new TypeormStore({ ttl: 86400 }).connect(this.sessionRepository),
secret: 'secret'
});
}
}
【问题讨论】:
标签: express-session typeorm nestjs