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
值仍然在之前的函数上下文中
【讨论】:
谢谢。有效。尽管有数据,但查询没有返回任何内容,但这是单独的问题。我将进一步排除故障并发布另一个问题。以上是关于TypeError:无法读取未定义的属性“myDate”的主要内容,如果未能解决你的问题,请参考以下文章