TypeScript中的Mongoose方法范围
我有一个关于在Mongoose方法的callback函数中的对象范围的问题。 我的员工有“地址”。 当你调用这个“方法”时,它会查找地址模型中的地址。
使用Javascript:
employeeSchema.methods.getAddresses = function (callback) { addressModel.find({ _id: { $in: this.addresses } }, function (err, obj) { callback(obj); }); };
我想把所有的东西都打出来,并且在函数中的'this'范围有问题。 范围在对象本身上,但所有示例都显示“this”。 这在TypeScript中不起作用,因为它认为它是主类。
打字稿:
employeeSchema.methods.getAddresses = (callback) => { addressModel.find({ _id: { $in: this.addresses } }, (err, obj) => { callback(obj); }); };
我有同样的问题与validation:
accountSchema.path('email').validate(function (email, callback) { if (this.isNew || this.isModified('email')) {} }
'这'是在callback的范围内的帐户,但有没有办法实际传递对象的callback?
既然你不想捕获词法范围this
,不要使用=>
。 只是使用function
。
有一个function请求声明this
是一个特定types的意思: https : //github.com/Microsoft/TypeScript/issues/229