0.0.8 • Published 1 year ago

@tdi-mc/mongo v0.0.8

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Table of Contents

  1. Introduction
  2. Installation
  3. Getting Started
  4. Reference
  5. Contributing

Introduction

This library provides an easy-to-use interface for working with MongoDB in NestJS applications. It is built on top of the popular mongoose and @typegoose/typegoose libraries, and provides a set of convenient abstractions for working with these libraries.

Installation

To install this library, use either npm or yarn:

npm install -S @tdi-mc/core @tdi-mc/mongo
# or
yarn add -S @tdi-mc/core @tdi-mc/mongo

Getting Started

Configuration

To use this library, you must first provide the necessary configuration. This can be done by creating a config.yml file in your application's root directory, with the following content:

mongo:
  host: localhost
  port: 27017
  user: my_user
  password: my_pass
  database: my_database

Replace the values with your actual database connection information.

Module

Once you have provided the configuration, you can import the MongoModule in your AppModule:

import { CoreModule, Module } from '@tdi-mc/core';
import { MongoModule } from '@tdi-mc/mongo';

@Module({
  imports: [CoreModule, MongoModule],
})
export class AppModule {}

Service

You can then use the MongoService to interact with the database:

import { Injectable } from '@tdi-mc/core';
import { MongoService } from '@tdi-mc/mongo';

@Injectable()
export class UserService {
  constructor(private readonly mongoService: MongoService) {}

  async getUsers() {
    const users = await this.mongoService.getModel(UserSchema).findAll();
    return users;
  }
}

Repository

Define a Model

You can define a model using @tdi-mc/mongo (based on interface of @typegoose/typegoose):

import { modelOptions, mongoose, prop } from '@tdi-mc/mongo';

@modelOptions({ schemaOptions: { collection: 'users' } })
export class UserSchema {
  @prop({ auto: true, immutable: true })
  public _id?: mongoose.Types.ObjectId;

  @prop()
  firstName: string;
}

Define a Repository

You can create a repository for your model by extending the MongoRepository class and providing the model type as a generic argument:

import { Injectable } from '@tdi-mc/core';
import { MongoRepository } from '@tdi-mc/mongo';
import { UserSchema } from './user.model';

@Injectable()
export class UserRepository extends MongoRepository<UserSchema> {}

Using Repository in Service

You can then use the repository in your service:

import { Injectable } from '@nestjs/common';
import { UserRepository } from './user.repository';

@Injectable()
export class UserService {
  constructor(
    private readonly userRepository: UserRepository,
  ) {}

  async getUsers() {
    const users = await this.userRepository.findAll();
    return users;
  }
}

Reference

mongoose

@typegoose/typegoose

Contributing

Contributions to @tdi-mc/mongo are welcome. If you would like to contribute, please fork the repository, make your changes, and submit a pull request.

Please make sure to update tests as appropriate.

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago