Я пытаюсь получить список компаний со связанными отчетами ИСПОЛЬЗУЯ 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");
}
Он не заполняется отчетами, а только выводит список компаний. Что-то мне не хватает? Пожалуйста, помогите. Спасибо.