babel 中嵌套的依赖注入,尤其是 mongoose
Posted
技术标签:
【中文标题】babel 中嵌套的依赖注入,尤其是 mongoose【英文标题】:Dependency injection of nest in babel particularly with mongoose 【发布时间】: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是什么意思?对不起,如果这是显而易见的事情。 【参考方案1】:有一个错误:
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();
这一行
@InjectModel(EventSchema) eventModel;
应该是@InjectModel('Event') eventModel
【讨论】:
以上是关于babel 中嵌套的依赖注入,尤其是 mongoose的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Angular 中的依赖注入将属性指令实例传递给嵌套组件