Интерфейсы Node / Nest JS и схема mon goose не имеют никакого отношения к тому, что выдает контроллер - PullRequest
0 голосов
/ 26 января 2020

Немного новичок в Node / Nest JS, но есть работающее приложение, использующее Node, Nest, MongoDB / Mon goose.

Я определил схемы mon goose для связи с MongoDB и интерфейсы, которые реализуют документ Mon goose.

Я действительно не вижу никакой связи между определениями схемы, данными в MongoDB или интерфейсами, возвращаемыми контроллерами. Если данные находятся в MongoDB, они возвращаются контроллером в HTTP-запросе независимо от того, определены ли они в схеме или интерфейсе.

Аналогичным образом, если я добавлю в интерфейс, схему или оба свойства, которые НЕ существуют в MongoDB, ничто не будет возвращено в API (как нулевое значение).

Не знаю почему.

ИНТЕРФЕЙС:

import { Document } from 'mongoose';
import { Division } from './division.interface';

export interface Branch extends Document {
  readonly branchId: number;
  readonly name: string;
  readonly type: string;
  readonly mainBranch: boolean;
  readonly lastUpdated: Date;
  readonly division: Division;
  readonly test: string; // doesnt exist in data, nothing returned in API call
}

СХЕМА:

import * as mongoose from 'mongoose';
import { DivisionSchema } from './division.schema';

export const BranchSchema = new mongoose.Schema({
  branchId: Number,
  name: String,
  type: String,
  mainBranch: Boolean,
  lastUpdated: Date,
  division: DivisionSchema,
  test: String // doesnt exist in data, nothing returned in API call
});

КОНТРОЛЛЕР:

...
    @Get('branches') 
    async getAllBranches(): Promise<Branch[]> {
      try {
        return this.branchesService.getAllBranches();
      }
      catch (e) {
        throw new HttpException(e.toString(), HttpStatus.INTERNAL_SERVER_ERROR);
      }
   }

СЕРВИС :

import { Model } from 'mongoose';
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Branch } from 'src/interfaces/branch.interface';

@Injectable()
export class BranchesService {
    constructor(@InjectModel('Branch') private readonly model: Model<Branch>) { }

    async getAllBranches(): Promise<Branch[]> {
        const result = await this.model.find().exec();
        return result;
    }
...
...