---
title: Mongoose vs Typegoose i NestJS - elpassion.com
description: Når du velger MongoDB-database i systemet ditt, vil du sannsynligvis også bruke et ODM-bibliotek. Se de viktigste forskjellene mellom Mongoose og Typegoose, spesielt når du arbeider med NestJS-rammeverket.
image: https://www.elpassion.com/hubfs/moongoose-vs-typegoose-in-nestjs.jpg
---

[Back to blog ](https://www.elpassion.com/blog?hsLang=no)

 7 mars 2025 (updated: 7 mars 2025)

# Mongoose vs Typegoose i NestJS

![](https://www.elpassion.com/hubfs/PawelSierant_author.png) ![](https://www.elpassion.com/hubfs/PawelSierant_author.png)

 by Paweł Sierant

- [ Development ](https://www.elpassion.com/no/blog/tag/development)

Chapters

![](https://www.elpassion.com/hubfs/moongoose-vs-typegoose-in-nestjs.jpg) ![](https://www.elpassion.com/hubfs/moongoose-vs-typegoose-in-nestjs.jpg)

 Show contents  Hide contents

Etter at du har valgt MongoDB-databasen i systemet ditt, vil du sannsynligvis også bruke et ODM-bibliotek. Det mest populære er Mongoose eller et bibliotek bygget på toppen av det - Typegoose. I denne artikkelen vil vi dekke hovedforskjellene når vi jobber spesifikt med NestJS-rammeverket.

Du vet sannsynligvis allerede at Typegoose i hovedsak er en måte å bruke Mongoose med TypeScript, og det ville vært ditt kriterium når du velger biblioteket. Men det er litt mer til dette når du jobber med NestJS-rammeverket fordi det er et Mongoose-wrapper laget av NestJS-forfatterne - @nestjs/mongoose, og når du ser på syntaksen - ser den nesten identisk ut med Typegoose.

La oss bryte ned forskjellene mellom dem slik at det blir lettere å bestemme hvilken tilnærming du bør velge i prosjektet ditt - bruke @nestjs/mongoose-pakken eller Typegoose. Når du integrerer MongoDB med en NestJS-applikasjon, vil du finne eksempler og kodebiter som viser hvordan du setter opp en NestJS-applikasjon for å jobbe med MongoDB ved hjelp av TypeScript og pakker som Typegoose.

## Hovedforskjeller

### Tilkobling og modellinjeksjon med MongoDB-database

@nestjs/mongoose er et bibliotek dedikert til Nest-rammeverket, så det kommer med full støtte for DI-arbeidsflyten. På den annen side kan Typegoose brukes i ethvert annet NodeJS-prosjekt, så du må enten integrere det med Nest selv eller bruke fellesskapspakker.

### Skjemadefinisjon

Selv om begge pakkene tillater definering av skjemaer ved hjelp av lignende dekoratører, varierer grensesnittene deres, og Typegoose tilbyr flere alternativer enn Nest-wrapperen. For eksempel - `@Schema()` dekoratøren tar kun Mongoose-definerte skjemaalternativer, mens `@modelOptions()` i tillegg til dette gir tilgang til en eksisterende tilkobling og noen tilpassede Typegoose-konfigurasjonsalternativer.

Med `@nestjs/mongoose`, hvis du vil manuelt endre skjema-definisjonen basert på metadata, kan du bruke `DefinitionsFactory` klassen. Denne tilnærmingen kan være nyttig når det er vanskelig å representere alt ved hjelp av dekoratører.

### Klassemetoder

Begge pakkene tillater definisjon av instanser og statiske metoder. Her er eksempler på hvordan vi kan definere klassemetoder i begge pakkene:

Som du kan se, må vi opprette ekstra grensesnitt når vi bruker mongoose, Typegoose lar oss imidlertid få typeinformasjon fra klasser. Definisjonene er også mer naturlige ettersom de er inneholdt i en klasse som vanlige metoder. Med Nest-pakken må du bruke `statics` og `methods` egenskapene utenfor klassen, noe som litt reduserer lesbarheten og blir en mindre naturlig tilnærming når det gjelder å bruke klasser.

### Hooks

Begge pakkene støtter hooks. I @nestjs/mongoose kan du bruke dem i fabrikkmetoden for modulimporter. Typegoose tilbyr støtte med @pre() og @post() dekoratører.

### Tilpassede spørringsmetoder

Du kan legge til tilpassede spørringer i begge pakkene, men du vil sannsynligvis støte på typeproblemer i Mongoose. Forskjellen mellom en spørringsmetode og en statisk funksjon på modellen er at funksjonen ikke ville være kjedelig.

### Virtuelle

Virtuelle egenskaper kan opprettes i Typegoose ved hjelp av ES6 get & set-funksjoner, mens du med Nest-pakken må bruke `virtual`-egenskapen utenfor klassen, noe som, i likhet med klassemetoder, føles mindre naturlig å jobbe med.

## Hvilken bør du velge?

Selv om Mongoose allerede kan utlede typer fra skjema-definisjonen og dens Nest-wrapper har kule funksjoner, vil du fortsatt ha mer nytte av å bruke Typegoose. Det har også bedre dokumentasjon og fellesskapsstøtte. Spørsmålet er - har du tid og ressurser til å integrere Typegoose i prosjektet ditt med Nest? Hvis ja, ville jeg personlig gitt det en sjanse.

### Sjekk også ut

- [Gjør prosjektoppsettet ditt enklere og billigere med generiske maler og monorepos](https://www.elpassion.com/blog/making-project-setup-cheaper-with-templates-and-monorepos?hsLang=no) — De store gutta tar ikke feil når de bruker monorepos for prosjektene sine. Monorepos sammen med en generisk mal kan gjøre prosjektoppsettet ditt raskere (og billigere).

[Share on Twitter ](http://twitter.com/share?url=https://www.elpassion.com/no/blog/mongoose-vs-typegoose-in-nestjs) [Share on LinkedIn ](https://www.linkedin.com/shareArticle?mini=true&url=https://www.elpassion.com/no/blog/mongoose-vs-typegoose-in-nestjs) [Share on Facebook ](http://www.facebook.com/sharer.php?u=https://www.elpassion.com/no/blog/mongoose-vs-typegoose-in-nestjs)

![](https://www.elpassion.com/hubfs/PawelSierant_author.png) ![](https://www.elpassion.com/hubfs/PawelSierant_author.png)

 Paweł Sierant

 Backend Developer

<https://www.linkedin.com/in/paweł-sierant-325471219/>

## Du kan også like dette

[![](https://www.elpassion.com/hubfs/natural-language-processing-features.png) ![](https://www.elpassion.com/hubfs/natural-language-processing-features.png) ](https://www.elpassion.com/no/blog/natural-language-processing?hsLang=no)

- AI

### [Lås opp kraften i ord: Hvordan NLP-funksjoner endrer måten vi forstår språk på](https://www.elpassion.com/no/blog/natural-language-processing?hsLang=no)

 23 juni 2025 • Ula Kowalska

[![](https://www.elpassion.com/hubfs/125d6de5-3db6-43db-ab6e-eab671ba037f.png) ![](https://www.elpassion.com/hubfs/125d6de5-3db6-43db-ab6e-eab671ba037f.png) ](https://www.elpassion.com/no/blog/rewrite-or-refactor-a-balanced-guide-to-legacy-systems?hsLang=no)

- [ Development ](https://www.elpassion.com/no/blog/tag/development)
- [ Business ](https://www.elpassion.com/no/blog/tag/business)

### [Skrive om eller refaktorere? En balansert guide til legacy-systemer](https://www.elpassion.com/no/blog/rewrite-or-refactor-a-balanced-guide-to-legacy-systems?hsLang=no)

 14 april 2025 • Ula Kowalska

[![](https://www.elpassion.com/hubfs/BLOG%20IMAGES/migrating-wordpress-to-webflow.png) ![](https://www.elpassion.com/hubfs/BLOG%20IMAGES/migrating-wordpress-to-webflow.png) ](https://www.elpassion.com/no/blog/switch-from-wordpress-to-webflow?hsLang=no)

- [ Business ](https://www.elpassion.com/no/blog/tag/business)

### [Hvorfor WordPress-dramaet gjør overgangen til Webflow til et smart valg](https://www.elpassion.com/no/blog/switch-from-wordpress-to-webflow?hsLang=no)

 11 mars 2025 • Maria Pradiuszyk

Kanskje dette er starten på en vakker venskap?

## Vi er tilgjengelig for nye prosjekter.

[![Contact us](https://no-cache.hubspot.com/cta/default/4937048/d8fa95f1-46dc-4ecf-b1a6-aa709c23404b.png)](https://cta-redirect.hubspot.com/cta/redirect/4937048/d8fa95f1-46dc-4ecf-b1a6-aa709c23404b)

```json
{
  "@context" : "http://schema.org",
  "@type" : "Organization",
  "address" : {
    "@type" : "PostalAddress",
    "addressCountry" : "Poland",
    "addressLocality" : "Warsaw",
    "addressRegion" : "Mazowieckie",
    "postalCode" : "",
    "streetAddress" : "Grzybowska 62 "
  },
  "email" : "projects@elpassion.com",
  "foundingDate" : "2011",
  "foundingLocation" : "Warsaw, Poland",
  "logo" : "https://www.elpassion.com/hubfs/elp_mnt_black.svg",
  "mainEntityOfPage" : {
    "@id" : "https://www.elpassion.com/no/blog/mongoose-vs-typegoose-in-nestjs",
    "@type" : "WebPage",
    "description" : "Når du velger MongoDB-database i systemet ditt, vil du sannsynligvis også bruke et ODM-bibliotek. Se de viktigste forskjellene mellom Mongoose og Typegoose, spesielt når du arbeider med NestJS-rammeverket."
  },
  "member" : {
    "@type" : "Person",
    "jobTitle" : "CEO",
    "name" : "Anna Elwart",
    "nationality" : "Poland",
    "url" : "https://www.linkedin.com/in/annaelwart/"
  },
  "name" : "El Passion",
  "numberOfEmployees" : "60",
  "sameAs" : [ "https://twitter.com/elpassion", "https://www.facebook.com/elpassion/", "https://www.linkedin.com/company/el-passion", "https://github.com/elpassion", "https://www.behance.net/elpassion", "https://dribbble.com/elpassion" ],
  "url" : "https://www.elpassion.com",
  "vatId" : "PL5213644497"
}
```

```json
{
  "@context" : "http://schema.org",
  "@type" : "WebSite",
  "url" : "https://www.elpassion.com/"
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : [ {
    "@type" : "Person",
    "name" : "Paweł Sierant",
    "url" : "https://www.elpassion.com/no/blog/author/paweł-sierant"
  }, {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : "150",
      "url" : "https://26048673.fs1.hubspotusercontent-eu1.net/hubfs/26048673/EL-Passion-Logo-400x150.svg",
      "width" : "400"
    },
    "name" : "EL Passion",
    "url" : "https://www.elpassion.com"
  } ],
  "dateModified" : "2025-03-07",
  "datePublished" : "2025-03-07",
  "headline" : "Mongoose vs Typegoose i NestJS - elpassion.com",
  "image" : "https://www.elpassion.com/hubfs/moongoose-vs-typegoose-in-nestjs.jpg",
  "inLanguage" : "en",
  "mainEntityOfPage" : {
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : "150",
      "url" : "https://26048673.fs1.hubspotusercontent-eu1.net/hubfs/26048673/EL-Passion-Logo-400x150.svg",
      "width" : "400"
    },
    "name" : "EL Passion",
    "url" : "https://www.elpassion.com"
  },
  "url" : "https://www.elpassion.com/no/blog/mongoose-vs-typegoose-in-nestjs"
}
```