TypeError:无法读取未定义的属性“myDate”

Posted

技术标签:

【中文标题】TypeError:无法读取未定义的属性“myDate”【英文标题】:TypeError: Cannot read property 'myDate' of undefined 【发布时间】:2019-06-25 12:41:17 【问题描述】:

我正在尝试编写一个相当基本的代码,但收到浏览器错误。 expressjs 日志也显示错误。

在 getReportTable (XXX\dist\controllers\crm\uploadHealthTable.js:18:70) 在 Layer.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) ;
    

【问题讨论】:

你怎么打电话给getReportTable 我正在使用 expressjs(MEAN 堆栈)并在 routes.ts 文件中,调用以下行 - app.route("/support/reporttable/1/all") .get(this.uploadHealthTable. getReportTable) ; 【参考方案1】:

您需要将此函数转换为箭头函数

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

说明: 因为您将函数作为参数传递,所以 this 值仍然在之前的函数上下文中

有用的链接: Typescript documentation for functions#this Typescript arrow functions

【讨论】:

谢谢。有效。尽管有数据,但查询没有返回任何内容,但这是单独的问题。我将进一步排除故障并发布另一个问题。

以上是关于TypeError:无法读取未定义的属性“myDate”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义的属性“findAll”(expressjs)

TypeError:无法读取未定义的属性(读取“问题”)

TypeError:无法读取未定义的属性“babel”

TypeError:无法读取未定义的属性(读取“匹配”):

TypeError:无法读取未定义的属性“存在”

TypeError:无法在 gitlab 中读取未定义的属性(读取“读取”)