Mongo module

You can use mongoose in your projects

Install @nestgram/mongo and mongoose

npm i @nestgram/mongo mongoose
npm i @types/mongoose --save-dev
// or
yarn add @nestgram/mongo mongoose
yarn add @types/mongoose -D

Connect mongoose

app.module.ts
import { Module } from 'nestgram';
import { UseMongoConnection } from '@nestgram/mongo';

import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  controllers: [AppController],
  services: [AppService],
  modules: [
    UseMongoConnection('uri'), // pass uri here
  ],
})
export class AppModule {}

Create schema

user.schema.ts
import { Schema, Prop, NestSchema } from '@nestgram/mongo';
import { Document } from 'mongoose';

@Schema()
export class User {
  @Prop() email: string; // email field (string type)
  @Prop() name: string;
  @Prop() age: number; // age field (number type)
  @Prop({ type: [Object], default: [] }) articles: any[]; // params for field
}

export type UserDocument = User & Document; // export user document
NestSchema.reg(User); // reg schema

Import schema

app.module.ts
import { Module } from 'nestgram';
import { UseMongoConnection, UseMongo } from '@nestgram/mongo';

import { User } from './user.schema.ts';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  controllers: [AppController],
  services: [AppService],
  modules: [
    UseMongoConnection('uri'), // pass uri here
    UseMongo(User), // pass schemas here that will be passed to your service
  ],
})
export class AppModule {}

Get the schema in the service

app.service.ts
import { Service } from 'nestgram';
import { Model } from 'mongoose';
import { User } from './user.schema.ts';

@Service()
export class AppService {
  constructor(private readonly User: Model<User>) {}
}

Then

You can then use the model in service methods and call it in controllers

Last updated