【问题标题】:How can I connect to a MySQL database with custom value?如何使用自定义值连接到 MySQL 数据库?
【发布时间】:2022-01-14 01:08:22
【问题描述】:

我有一个 NestJs 项目。与预先创建的不同数据库建立了连接。

TypeOrmModule.forRoot({
      "type": "mysql",
      "host": "***,
      "port": 3306,
      "username": "***",
      "password": "***",
      "database": "db_name",
      "autoLoadEntities": true,
      "name": "users_db",
      "synchronize": true
    }), 

当用户注册时,会使用他的 [user_id] 创建一个数据库。我需要在这个数据库中添加数据。如何通过获取他的 id 连接到他的数据库?我无法将数据传递给 app.module 还是有其他方法?我以前从未使用过 typeorm。

【问题讨论】:

    标签: mysql nestjs typeorm


    【解决方案1】:

    TypeOrm 在 here 上有一些文档。

    这些文档中的一个示例:

    const users = await connection
        .createQueryBuilder()
        .select()
        .from("secondDB.user", "user")
        .addFrom("thirdDB.photo", "photo")
        .andWhere("photo.userId = user.id")
        .getMany(); 
    

    此功能仅在 mysql 和 mssql 数据库中受支持。

    其中secondDBthirdDB 是同一连接中的不同数据库。

    您可以像在 Nest 中一样使用它。在应用模块中设置.forRoot(),注入存储库或连接,然后创建查询构建器。

    【讨论】:

      【解决方案2】:

      如果您的应用只有一个实例,则无法更改。 如果您为每个用户创建单独的实例您的应用程序是可能的。 但是你为什么要改变这个?

      像这里一样使用环境username: process.env.POSTGRES_DB_USERNAME,

      但是,如果您想在任何实体中添加 whoCreated、whoUpdated,您只需将有关已登录用户的信息添加到您的服务更新/保存中。

      【讨论】:

        猜你喜欢
        • 2011-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-04
        • 2020-11-20
        相关资源
        最近更新 更多