【发布时间】:2019-03-17 15:30:40
【问题描述】:
我正在遵循 NestJs 关于 Mongoose 的指南,但使用 Babel 时,我在尝试注入我的架构时遇到了错误。代码非常简单,和 typescript 的例子一样,只是使用了 babel。
这是我的主要模块
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { EventModule } from './events/event-module';
@Module({
imports: [
MongooseModule.forRoot(process.env.MONGO_URI),
EventModule,
],
})
export class AppModule {}
这是最简单的模式示例
import { Schema } from 'mongoose';
export const EventSchema = new Schema({
title: String,
description: Number,
});
模块事件模块:
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { EventController } from "./event-controller";
import { EventService } from "./event-service";
import { EventSchema } from '../schemas/event-schema';
@Module({
imports: [
MongooseModule.forFeature([
{ name: 'Event', schema: EventSchema }
])
],
controllers: [EventController],
providers: [
EventService,
],
})
export class EventModule {}
最后,我希望使用架构的服务:
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { EventSchema } from '../schemas/event-schema';
@Injectable()
export class EventService {
@InjectModel(EventSchema) eventModel;
async getAll() {
return await this.eventModel.find().exec();
}
}
问题是当我从控制器调用getAll 时,发现eventModel 是未定义的!实例化时不会引发错误。抛出的错误是:
TypeError: Cannot read property 'find' of undefined
at EventService._callee$ (D:\.../event-service.js:9:34)
at tryCatch (D:\...\node_modules\babel-polyfill\node_modules\regenerator-runtime\runtime.js:65:40)
是否有可能在 babel 中,nestjs 的依赖注入工作方式不同? InjectModel 应该如何工作或如何与 babel 一起使用?
非常感谢您,任何建议或提示都非常感谢和接受
问候
【问题讨论】:
-
可以试试@Bind(InjectModel(EventSchema))
-
注入构造函数有效吗?
-
构造函数不可装饰,参数也不可装饰。 @Bind 不适用于 InjectModel
-
你说的constructor is not decorable是什么意思?对不起,如果这是显而易见的事情。
标签: javascript node.js mongoose babeljs nestjs