TypeError: Невозможно прочитать свойство 'myDate' из неопределенного - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь заставить работать один довольно простой код, но получаю ошибку браузера.expressjs logs также показывает ошибку.

TypeError: Невозможно прочитать свойство 'myDate' из undefined в getReportTable (XXX \ dist \ controllers \ crm \ uploadHealthTable.js: 18: 70) на уровне.handle [as handle_request] (XXX \ node_modules \ express \ lib \ router \ layer.js: 95: 5) в следующем (XXX \ node_modules \ express \ lib \ router \ route.js: 137: 13)

import { Request, Response } from "express";
import * as mongoose from "mongoose";
import { uploadHealthTableSchema } from "../../models/crm/uploadHealthTableModel";

const reportTable = mongoose.model("USER_UPLOAD", uploadHealthTableSchema);

export class UploadHealthTable {

private myDate = new Date() ;

    public getReportTable(req: Request, res: Response) {
    reportTable.find({companyId: "18", uploadTime: { $gte: this.myDate.setDate(this.myDate.getDate() - 5) } },
    "_id fileName status uploadTime", { sort: {uploadTime: -1} }, (err, report) => {
        if (err) {
        res.send(err);
        }
        res.json(report);
    });
    }
}

Вызов этой функции -

export class CRMRoutes {
    public uploadHealthTable: UploadHealthTable = new UploadHealthTable() ;

    public routes(app: any): void {

        app.route("/support/reporttable/1/all")
        .get(this.uploadHealthTable.getReportTable) ;
    }
}

1 Ответ

0 голосов
/ 03 февраля 2019

Вам необходимо преобразовать эту функцию в функцию стрелки

public getReportTable = (req: Request, res: Response) => {}

Объяснение : поскольку вы передали функцию в качестве аргумента, значение thisвсе еще находится в предыдущем контексте функции

Полезные ссылки:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...