node.js - Hur man använder typescript och mongoose?


Jag har arbetat på en applikation i några månader och jag har börjat tvivla på min nuvarande backend-arkitektur. Jag bygger en backend med Typescript, mongoose och routing-controllers.

Jag har en kontroller som hanterar förfrågningarna och skickar dem till ett repository. Jag har två typer av repositoryn. Ett vanligt repository (som kontrollern interagerar med) och ett modellrepository (som interagerar med mongoose-modellen).

Jag har också definierat några gränssnitt för mongoose-modellerna. Säg att jag har en användare:

export interface User {
    firstName: string;
    lastName: string;
}

export interface UserModel extends User, Document {
}

När modellen skapas använder den UserModel.

Nu är mina frågor:

1) Är detta ett korrekt sätt att använda Node.js?

2) När man gör en förfrågan med modellförrådet, bör User-gränssnittet eller UserModel-gränssnittet returneras?

För närvarande använder jag det så här

public async getUserById(userId: string): Promise<UserModel> {
    return this.userModel.findById(userId);
}

Och sedan returnerar det normala förrådet ett objekt av User-gränssnittet.