打字稿 - 为什么猫鼬中不存在“方法”属性
Typescript - Why `methods` property doesn't exist in mongoose?
我在nodejs中编码打字稿。当我编写猫鼬模式时,Typescript 编译器告诉我如下:
app/models/user.schema.ts(15,12): error TS2339: Property 'methods' does not exis
t on type 'Schema'.
我觉得很奇怪。我在指南的Instance methods
部分中参考了文档。它提到如下:
// assign a function to the "methods" object of our animalSchema
animalSchema.methods.findSimilarTypes = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
}
我认为methods
是一个可用的属性或 API。但是对于打字稿,这是错误的。
接下来,我查找定义。我找到了方法(名称:字符串,fn:函数(和方法(方法:对象(这些属性,但它没有methods
。
简而言之,你没有回答我为什么猫鼬定义的作者没有定义属性。我需要mongoose
中的methods
是否真的可用的答案?
不,在纯 JavaScript 中没有"方法"这样的属性。它是猫鼬的细节。请注意,node.js内部使用与chrome浏览器相同的google V8 javascript引擎 - 因此node.js没有纯javascript这样的东西。
methods
属性确实存在于猫鼬中,但是像打字稿中的javascript那样使用猫鼬方法/静态会导致错误。以下是一些解决方法。
解决方法 A:
userSchema['methods'].findSimilarTypes = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
}
解决方法 B:
userSchema.method('findSimilarTypes', function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
})
今天猫鼬发布了新版本的猫鼬5.11.0。如果你在package.json中有"mongoose":"^5.x.xx",你会得到很多这样的错误。因此,我建议更改"猫鼬":"~5.x.xx"以修复它们。
相关文章:
- 用javascript在对象上创建不存在的方法
- html5 拖放 - items.webkitGetAsEntry() 方法不存在
- 打字稿 - 为什么猫鼬中不存在“方法”属性
- 角度火:未定义不是一个函数($on方法不存在)
- 如何在不使用 eval 的情况下使不存在的(非成员,非全局)方法可调用
- 名称参数在 JQUERY 方法的当前上下文中不存在
- 对不存在的元素进行转义的常用方法是什么(如jQuery)
- 在mongo中检查数据并创建数据的有效方法'不存在
- 从JS调用flash方法时,函数不存在
- 如何在JavaScript中的一行中调用一个可能不存在的方法而不出错
- JavaScript:访问可能不存在的属性的子属性的最少重复的方法
- 使用量角器spyOn()为jQuery ajax()导致错误"ajax()方法不存在"
- 是否有一种方法来验证YouTube视频ID,同时处理CORS和不存在的API
- jQuery UI toggleClass方法不存在选项
- 错误:getItem()方法不存在(Angular, mocking LocalStorage)
- 解决打字错误的最佳方法-类型上不存在属性
- 仅当值不存在时才将其压入数组的最有效和干净的方法
- 给定一个id列表,查询集合中不存在哪些id的最佳方法是什么?
- 姓名'id'在Javascript方法的当前上下文中不存在
- 如何对还不存在的DOM元素调用Jquery方法?