我希望能够console.log为每个正在执行的 SQL 查询记录(如在 中)登录用户。我正在使用 Nest.js 和 TypeORM(它是 Nest.js 的包装器)。我不知道如何将特定于请求的数据注入全局(单例)提供程序。
我使用的是 Nest.js v6.6.3 和@nestjs/typeormv6.1.3。
// current-user.service.ts
@Injectable({ scope: Scope.REQUEST })
export class CurrentUserService {
get currentUser(): string | null {
if (!this.request || !this.request.user) {
return null;
}
return this.request.user.email;
}
constructor(@Optional() @Inject(REQUEST) private request: Request) {}
}
// logger.service.ts
@Injectable()
export class LoggerService extends Logger {
constructor(private readonly moduleRef: ModuleRef) {
super();
}
log(message: any, context?: string) {
super.log(this.formatMessage(message), context);
}
private formatMessage(message: any) {
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试测试一个 Angular Component,它基本上接收一个Observable并template根据该 Observable 发出的值更改它。这是一个简化版本:
@Component({
selector: 'async-text',
template: `
<span>{{ text | async }}</span>
`,
})
export class AsyncTextComponent {
@Input() text: Observable<string>;
}
Run Code Online (Sandbox Code Playgroud)
我想测试一下,目前这就是我所拥有的,正在使用rxjs-marbles(尽管它不是必须的)。
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AsyncTextComponent } from './async-text.component';
describe('AsyncTextComponent', () => {
let component: BannerComponent;
let fixture: AsyncTextComponent<AsyncTextComponent>;
it('...',
marbles(m => {
fixture = TestBed.createComponent(AsyncTextComponent);
component = fixture.componentInstance;
component.text = m.cold('-a-b-c|', {
a: 'first',
b: 'second',
c: 'third',
});
fixture.detectChanges();
expect(component.nativeElement.innerHTML).toContain('first'); …Run Code Online (Sandbox Code Playgroud)