Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kpfromer/nestjs-typegoose
Typegoose with NestJS
https://github.com/kpfromer/nestjs-typegoose
mongoose nest nestjs nestjs-typegoose typegoose typescript
Last synced: 7 days ago
JSON representation
Typegoose with NestJS
- Host: GitHub
- URL: https://github.com/kpfromer/nestjs-typegoose
- Owner: kpfromer
- License: mit
- Created: 2018-04-16T01:55:53.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-11-19T14:42:20.000Z (23 days ago)
- Last Synced: 2024-11-29T01:05:14.650Z (14 days ago)
- Topics: mongoose, nest, nestjs, nestjs-typegoose, typegoose, typescript
- Language: TypeScript
- Homepage: https://kpfromer.github.io/nestjs-typegoose/
- Size: 5.36 MB
- Stars: 291
- Watchers: 8
- Forks: 73
- Open Issues: 114
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nestjs - Nest Typegoose - nest.js 的 [Typegoose](https://github.com/szokodiakos/typegoose) 模块。 (资源 / 集成)
README
# nestjs-typegoose
[![NPM](https://nodei.co/npm/nestjs-typegoose.png)](https://nodei.co/npm/nestjs-typegoose/)
[![npm version](https://badge.fury.io/js/nestjs-typegoose.svg)](https://badge.fury.io/js/nestjs-typegoose)
[![Build Status](https://travis-ci.org/kpfromer/nestjs-typegoose.svg?branch=master)](https://travis-ci.org/kpfromer/nestjs-typegoose)
[![Coverage Status](https://coveralls.io/repos/github/kpfromer/nestjs-typegoose/badge.svg?branch=master)](https://coveralls.io/github/kpfromer/nestjs-typegoose?branch=master)
![npm](https://img.shields.io/npm/dm/nestjs-typegoose)
![npm bundle size](https://img.shields.io/bundlephobia/min/nestjs-typegoose)
![David](https://img.shields.io/david/peer/kpfromer/nestjs-typegoose)## Description
Injects [typegoose](https://github.com/szokodiakos/typegoose) models for [nest](https://github.com/nestjs/nest) components and controllers. Typegoose equivalant for [@nestjs/mongoose.](https://docs.nestjs.com/techniques/mongodb)
Using Typegoose removes the need for having a Model interface.
## Installation
```bash
npm install --save nestjs-typegoose
```or
```
yarn add nestjs-typegoose
```## Documentation
[Here is the full documentation describing all basic and advanced features.](https://kpfromer.github.io/nestjs-typegoose/)
## Basic usage
You can checkout the `example` project for more details.
**app.module.ts**
```typescript
import { Module } from "@nestjs/common";
import { TypegooseModule } from "nestjs-typegoose";
import { CatsModule } from "./cat.module.ts";@Module({
imports: [
TypegooseModule.forRoot("mongodb://localhost:27017/nest", {
useNewUrlParser: true,
}),
CatsModule,
],
})
export class ApplicationModule {}
```Create class that describes your schema
**cat.model.ts**
```typescript
import { prop } from "@typegoose/typegoose";
import { IsString } from "class-validator";export class Cat {
@IsString()
@prop({ required: true })
name: string;
}
```Inject Cat for `CatsModule`
**cat.module.ts**
```typescript
import { Module } from "@nestjs/common";
import { TypegooseModule } from "nestjs-typegoose";
import { Cat } from "./cat.model";
import { CatsController } from "./cats.controller";
import { CatsService } from "./cats.service";@Module({
imports: [TypegooseModule.forFeature([Cat])],
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {}
```Get the cat model in a service
**cats.service.ts**
```typescript
import { Injectable } from "@nestjs/common";
import { InjectModel } from "nestjs-typegoose";
import { Cat } from "./cat.model";
import { ReturnModelType } from "@typegoose/typegoose";@Injectable()
export class CatsService {
constructor(
@InjectModel(Cat) private readonly catModel: ReturnModelType
) {}async create(createCatDto: { name: string }): Promise {
const createdCat = new this.catModel(createCatDto);
return await createdCat.save();
}async findAll(): Promise {
return await this.catModel.find().exec();
}
}
```Finally, use the service in a controller!
**cats.controller.ts**
```typescript
import { Controller, Get, Post, Body } from "@nestjs/common";
import { CatsService } from "./cats.service";
import { Cat } from "./cats.model.ts";@Controller("cats")
export class CatsController {
constructor(private readonly catsService: CatsService) {}@Get()
async getCats(): Promise {
return await this.catsService.findAll();
}@Post()
async create(@Body() cat: Cat): Promise {
return await this.catsService.create(cat);
}
}
```## Requirements
1. @typegoose/typegoose +6.1.5
2. @nestjs/common +6.10.1
3. @nestjs/core +6.10.1
4. mongoose (with typings `@types/mongoose`) +5.7.12## License
nestjs-typegoose is [MIT licensed](LICENSE).