TypeScript中的Mongoose方法范围

Mongoose method scope in TypeScript

本文关键字:范围 方法 Mongoose 中的 TypeScript      更新时间:2023-09-26

我对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