TypeScript 中的 Mongoose 方法范围
Posted
技术标签:
【中文标题】TypeScript 中的 Mongoose 方法范围【英文标题】:Mongoose method scope in TypeScript 【发布时间】:2014-11-23 23:49:26 【问题描述】:我对 Mongoose 方法的回调函数中的对象范围有疑问。 我的员工有“地址”。当您调用此“方法”时,它会在地址模型中查找地址。
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);
);
;
我有同样的验证问题:
accountSchema.path('email').validate(function (email, callback)
if (this.isNew || this.isModified('email'))
'This'是回调范围内的账户,但有没有办法将对象实际传递给回调?
【问题讨论】:
为什么不把地址作为参数传入你的方法呢? (地址,回调)...然后调用者将使用“this.addresses” 【参考方案1】:由于您不想捕获词法范围的this
,因此不要使用=>
。只需使用function
。
有一个功能请求将this
的含义声明为特定类型:https://github.com/Microsoft/TypeScript/issues/229
【讨论】:
好吧,在那之前我将使用 function() 并将其转换为类型化对象。谢谢 只是一个提示:更喜欢术语assert
而不是cast
,因为没有任何运行时支持以上是关于TypeScript 中的 Mongoose 方法范围的主要内容,如果未能解决你的问题,请参考以下文章
使用 Typescript 在 Mongoose 中缺少子文档方法
使用 Typescript 在 Mongoose 中缺少子文档方法
Typescript & Mongoose - "this" 在实例方法中不可用
Node.js/Mongoose/MongoDb Typescript MapReduce - emit() 和 Array.sum() 方法
Node.js/Mongoose/MongoDb Typescript MapReduce - emit() 和 Array.sum() 方法