Mon goose поля не заполняются правильно при попытке найти - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь получить список компаний со связанными отчетами ИСПОЛЬЗУЯ NEST JS AND MON GOOSE.

, вот код:

СХЕМА КОМПАНИИ

export const CompanySchema = new Schema({
  name: String,
  description: String,
  address: String,
  email: String,
  reports: { type: Schema.Types.ObjectId, ref: "Report" },
  createdAt: { type: Date, default: Date.now }
});

CompanySchema.virtual("company", {
  ref: "Report",
  localField: "_id",
  foreignField: "company"
});

СХЕМА ОТЧЕТА

export const ReportSchema = new Schema({
  company: { type: Schema.Types.ObjectId, ref: "Company" },
  name: String,
  period: String,
  assignee: String,
  type: {
    type: String,
    enum: ["Periodic", "Annual", "Financial", "Analytical"]
  },
  submitted: { type: Date, default: Date.now }
});

Идентификатор полностью заполняется под ссылочным ключом company Теперь я пытаюсь найти список компаний с соответствующими отчетами.

файл службы компаний

  async getAllCompanies(): Promise<Company[]> {
    const companies = await this.companyModel
      .find()
      .populate({
        path: "reports"
      })
      .exec();
    // .select("-__v -_id -createdAt");
    return companies;
  }

файл контроллера компаний

@Get("companies")
  @ApiResponse({ status: 200 })
  async getAllCompanies(@Res() res) {
    try {
      const companies = await this.companyService.getAllCompanies();
      return res.status(HttpStatus.OK).json({ status: 200, data: companies });
    } catch (error) {
      console.log(error);
      return res
        .status(HttpStatus.INTERNAL_SERVER_ERROR)
        .json({ status: 500, error: "An error occurred." });
    }

}

код, который я использовал для заполнения поля компании для отчетов

файл службы отчетов

@Injectable()
export class ReportService {
  constructor(
    @InjectModel("Report")
    private reportModel: Model<Report>
  ) {}
  async addReport(
    createReportDTO: CreateReportDTO,
    companyId: string
  ): Promise<Report> {
    const newReport = await this.reportModel({
      ...createReportDTO,
      company: companyId
    });
    await newReport.save();
    return newReport.populate("company");
  }

Он не заполняется отчетами, а только выводит список компаний. Что-то мне не хватает? Пожалуйста, помогите. Спасибо.

...