TypeScript中的Mongoose方法范围
Mongoose method scope in TypeScript
我对Mongoose方法的回调函数中对象的作用域有一个问题。我的员工有"地址"。当您调用此"方法"时,它会在地址模型中查找地址。
Javascript:
employeeSchema.methods.getAddresses = function (callback) {
addressModel.find({ _id: { $in: this.addresses } }, function (err, obj) {
callback(obj);
});
};
我想让所有的东西都是类型化的,并且函数中的"this"范围有问题。作用域在对象本身上,但是所有示例都显示"this"。这在TypeScript中不起作用,因为它认为它是主类。
TypeScript:
employeeSchema.methods.getAddresses = (callback) => {
addressModel.find({ _id: { $in: this.addresses } }, (err, obj) => {
callback(obj);
});
};
我在验证方面也有同样的问题:
accountSchema.path('email').validate(function (email, callback) {
if (this.isNew || this.isModified('email')) {}
}
"This"是回调范围内的帐户,但是否有方法将对象实际传递给回调?
因为您不想捕获词法范围的this
,所以不要使用=>
。只需使用function
。
存在将this
的含义声明为特定类型的功能请求:https://github.com/Microsoft/TypeScript/issues/229
相关文章:
- 如何创建一个方法来验证数组的范围
- JavaScript对象范围-在对象方法中使用对象变量
- 如何测试只在闭包范围中可见的javascript方法
- 在 JavaScript 中获取范围的随机数的最佳方法
- Vue.js 在方法内失去范围
- 是否可以对超出范围的 setInterval 变量调用 clearInterval 方法
- 如何在 javascript 中更改方法调用的全局范围
- 在日期范围内查找丢失日期的最有效方法是什么
- 是否有任何方法可以访问外部范围's变量
- 当生成正态分布的随机值时,定义范围的最有效方法是什么
- javascript ES6类/方法范围
- AngularJs,DropZone.Js - 有没有人想出一种方法来将Dropzone传输保留在Angular根范围内
- Javascript 对象方法范围 - 方法失败
- 谷歌地图变量的范围和调用方法
- jQuery插件样板 - 具有绑定范围的私有方法
- 如何从 ui-grid 中显示的按钮调用范围方法 - 在 Angular js 中
- ExpressJS中POST方法上的变量会话的范围
- 如何使用 ExtJS 4 中控制器的控制方法更改范围
- 如何从 ngGrid 中显示的按钮调用范围方法
- 用sinon存根在角控制器构造中调用的范围方法