• Mail us
  • Book a Meeting
  • Call us
  • Chat with us

NodeJS

How to connect multiple database in NodeJS


Why do we use multiple databases ?

Multiple databases are useful in various situation

1) Microservice architecture: when each service has its own database.

2) Data segregation: You may need separate databases for different modules (e.g., userProducts, users).

3) Different Database Types: Connecting to both SQL and NoSQL databases in the same project.

 

Prerequisites

  • NodeJS installed.
  • TypeORM and the required database drivers installed.
  • Basic knowledge of NodeJS and TypeORM.
  •  

connect multiple database in node with typeORM

Follow This Steps:

1) Step 1: Install Required Dependencies.

 Note: Ensure you have TypeORM and the necessary database drivers for the databases  you’re connecting. Example, PostgreSQL and MySQL.     npm install typeorm @nestjs/typeorm pg mysql2  

2) Step 2: Create the Project

       /src                 /entities                    userCart.ts                    userProducts.ts                /modules                    userCart.module.ts                     product.module.ts               app.module.ts                main.ts              /ormconfig                ormconfig.userCart.ts                 ormconfig.product.ts                Package.json

3) Step 3: Create ORM Configuration Files

   -  ormconfig.userCart.ts for userCart database         import { DataSource } from 'typeorm';

         import { userCarts } from '../oc/src/shared/entity/userCarts';          export const userCartDataSource = new DataSource({               type: 'postgres',  // database you want to use       host: 'localhost',         port: 5432,                           username: 'userCart_db_user',                          password: 'userCart_db_password',                         database: 'userCart_db',                          entities: [userCarts],                        synchronize: true,                }); - ormconfig.product.ts for product database           import { DataSource } from 'typeorm';import { userProducts } from '/oc/src/shared/entity/userProducts';export const ProductDataSource = new DataSource({  type: 'mysql', // database you want to use  host: 'localhost',  port: 3306,  username: 'userProducts_db_user',  password: 'userProducts_db_password',  database: 'userProducts_db',  entities: [userProducts],  synchronize: true,}); 

Step 4: Create Entities for Each Database

 -  userCart.ts Entity for the userCart Database

        import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

                  @Entity()         export class userCart {  @PrimaryGeneratedColumn()  id: number;  @Column(type: 'decimal',{ precision: 7, scale: 3, nullable: true})  totalItem: number;}
  • Product.ts Entity for the Product Database       import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

  @Entity()

export class userProducts {

  @PrimaryGeneratedColumn()

  id: number;

  @Column()

   name: string; }

Step 5: Initialize Data Sources in Your Application

-  made configuration in your app.module.ts     import { Module } from '@nestjs/common';

import { TypeOrmModule } from '@nestjs/typeorm';import { userCartModule } from 'oc/module/userCart.module';import { ProductModule } from 'oc/module/userProducts.module';import { UserDataSource } from 'oc/ormconfig/ormconfig.userCart';import { ProductDataSource } from 'oc/ormconfig/ormconfig.userProducts';@Module({   imports: [     // Import the userCart database connection     TypeOrmModule.forRootAsync({      useFactory: () => userCartDataSource.options,     }),     // Import the product database connection     TypeOrmModule.forRootAsync({       useFactory: () => ProductDataSource.options,     }),     userCartModule,     ProductModule,   ],}) export class AppModule {} 

Step 6: Implement Modules for userCart and Product

 - user.module.ts     import { Module } from '@nestjs/common';

import { TypeOrmModule } from '@nestjs/typeorm';import { userCart } from '../oc/src/shared/entity/userCarts';import { userCartService } from 'oc/user.service';@Module({   imports: [TypeOrmModule.forFeature([userCart])],  providers: [userCartService],})

export class userCartModule {}

  •  product.module.ts

                   import { Module } from '@nestjs/common';

       import { TypeOrmModule } from '@nestjs/typeorm';import { userProducts } from '../oc/src/shared/entity/userProducts';import { userProductservice } from 'oc/product.service';@Module({  imports: [TypeOrmModule.forFeature([userProducts])],  providers: [userProductservice],})export class ProductModule {}

Step 7: Implement Services for Handling CRUD Operations

user.service.ts

import { Injectable } from '@nestjs/common';import { InjectRepository } from '@nestjs/typeorm';import { Repository } from 'typeorm';import { userCart } from '../oc/src/shared/entity/userCarts';@Injectable()export class userCartService {  constructor(    @InjectRepository(userCart)    private userCartRepository: Repository<userCart>,  ) {}  finduserCartDetails(): Promise<userCart[]> {    return this.userCartRepository.find();  }}product.service.ts import { Injectable } from '@nestjs/common';import { InjectRepository } from '@nestjs/typeorm';import { Repository } from 'typeorm';import { userProducts } from '../oc/src/shared/entity/userProducts';@Injectable()export class userProductsService {  constructor(    @InjectRepository(userProducts)    private userProductsRepository: Repository<userProducts>,  ) {}  findAll(): Promise<userProducts:[]> {    return this.productRepository.find();  }  create(product: userProducts): Promise<userProducts> {    return this.productRepository.save(product);  }}

Step 8: Run Your Application

npm run start

 

Ready to transform your business with our technology solutions?     Contact Us today to Leverage Our NodeJS Expertise.

Share

facebook
LinkedIn
Twitter
Mail
NodeJS

Related Center Of Excellence