首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在雀巢上将ElasticSearch连接添加到app.module

在雀巢上将ElasticSearch连接添加到app.module
EN

Stack Overflow用户
提问于 2022-04-01 03:24:17
回答 1查看 870关注 0票数 0

我正试图在我的app.module.ts上创建一个与app.module.ts的连接。我的项目文件夹看起来如下:

代码语言:javascript
复制
src
 |database
   |- elasticsearch-database.module.ts
   |- es.services.ts
 |services
   |- products
      |-products.controller.ts
      |-products.module.ts
      |-products.service.ts
 app.module.ts

首先,我在elasticsearch-database.module.ts上创建连接

代码语言:javascript
复制
 @Global()
    @Module({
        imports: [
            ElasticsearchModule.registerAsync({
                useFactory: () => ({
                  node: 'http://localhost:9200'
                })
              })
        ],
        providers: [SearchService],
        exports: [SearchService]
    })

export class elasticSearchDatabaseModule{}

我的SearchServicees.services.ts

代码语言:javascript
复制
@Injectable()
export class SearchService {
  constructor(private readonly elasticsearchService: ElasticsearchService) {}
}

然后,我将elasticSearchDatabaseModule导入到

代码语言:javascript
复制
app.module.ts

@Module({
  imports: [
    elasticSearchDatabaseModule,
    ProductsModule
  ],
  
})
export class AppModule {}

我的ProductsModule on products.module.ts

代码语言:javascript
复制
@Module({
    imports: [
        elasticSearchDatabaseModule,

    ],
    controllers: [ProductsController],
    providers: [ ProductsService],
})

export class EventsModule { }

最后,在ProductsService上,我

代码语言:javascript
复制
import { ElasticsearchService } from "@nestjs/elasticsearch";
@Injectable()
export class EventsService {
    constructor(
        private readonly elasticSearch      : ElasticsearchService
    ) { }
}

所发生的错误是:

代码语言:javascript
复制
Potential solutions:
- If ElasticsearchService is a provider, is it part of the current EventsModule?
- If ElasticsearchService is exported from a separate @Module, is that module imported within EventsModule?
  @Module({
    imports: [ /* the Module containing ElasticsearchService */ ]
  })
 +3ms
Error: Nest can't resolve dependencies of the EventsService (?). Please make sure that the argument ElasticsearchService at index [0] is available in the EventsModule context.

如果我直接在products.module.ts上创建连接,我就能够完全编译,而不会出错。

代码语言:javascript
复制
imports: [
     
        ElasticsearchModule.register({
            node: 'http://elasticsearch:9200',
        })
    ]

但是,如果我想在其他服务中使用elasticSearch连接,我认为这不是最好的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-01 03:42:32

如果要公开由该动态模块(ElasticsearchModule.registerAsync() one)导出的所有提供程序,则需要导出ElasticsearchModule模块。请参阅:https://docs.nestjs.com/modules#module-re-exporting

为此,只需将ElasticsearchModule添加到elasticSearchDatabaseModule模块的exports数组中即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71701428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档