elasticsearch NestJS和Elastic Cloud连接方法

3ks5zfa0  于 2023-06-21  发布在  ElasticSearch
关注(0)|答案(1)|浏览(151)

因此,我能够成功连接到localhost:9200,但现在我必须使用以下命令将NestJS服务器连接到Elastic Cloud:

{
   "encoded": <my_encoded_key>,
   "api_key": <my_api_key>,
   "id": <my_id>,
   "name": <my_name>
}

此外,我使用AWS弹性云,所以我有一个apiUrl连接,但没有其他
1.我不知道如何建立到弹性云的连接,所以我需要一点指导。
1.另外,如果我不能直接连接到RDS,我必须使用axios或fetch吗?
对某些人来说可能听起来很愚蠢,但提前谢谢你。
我试着配置axios并使用它,因为这是我的同事尝试过的。但我觉得有点没效率。应该还有别的办法

ojsjcaue

ojsjcaue1#

您不一定需要Axios才能通过RDS连接到数据库。您可以使用Prisma ORM仅通过URL建立连接。以下是如何设置它:
首先,通过运行以下命令将Prisma安装到您的应用程序中:

npm install prisma --save-dev
npx prisma
npx prisma init

然后,您可以在schema.prisma文件中配置表:

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

然后,可以使用db.service.ts文件建立连接,并通过注入和模块文件分发服务。下面是一个例子:

import { Injectable, OnModuleInit, OnModuleDestroy, INestApplication } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
import { PrismaUniversal } from 'prisma-decimal/lib/prisma.universal';

@Injectable()
export class DbService
  extends PrismaUniversal
  implements OnModuleInit {
  async onModuleInit() {
    // optional: this.models = ['table'];
    this.$use(this.convertDecimal);
    await this.$connect();
  }

  async enableShutdownHooks(app: INestApplication) {
    this.$on('beforeExit', async () => {
      await app.close();
    });
  }

对于AWS Elastic Cloud,您可以创建用户,分配必要的权限,并使用密钥建立连接。
关于AWS Elastic Cloud,需要补充的一点是安全管理密钥的重要性。建议使用安全机制来管理和存储AWS密钥,例如环境变量或AWS Secrets Manager。
请记住,上面的示例使用SQLite作为提供程序。要连接到RDS示例,需要将其更改为适当的数据库提供程序(如postgresql、mysql等)并提供正确的连接字符串。
作为参考,Prisma支持多种数据库,如PostgreSQL、MySQL、SQLite和SQL Server。请确保选择与RDS数据库示例匹配的正确提供程序。此外,对于生产应用程序,通常最好避免将敏感信息(如数据库URL)直接存储在代码中。考虑使用环境变量或安全秘密管理器来实现此目的。

相关问题