【问题标题】:Dependency injection of nest in babel particularly with mongoosebabel 中嵌套的依赖注入,尤其是 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是什么意思?对不起,如果这是显而易见的事情。

标签: javascript node.js mongoose babeljs nestjs


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    相关资源
    最近更新 更多