Typescript 将fuzzySearch与mongoose一起使用时出现类型脚本错误

Typescript 将fuzzySearch与mongoose一起使用时出现类型脚本错误,typescript,mongoose,Typescript,Mongoose,在我的mongoose模式中,我使用如下库: 然后在服务中,我使用它如下: export function fuzzySearchUser(name: string): Query<Array<IUser>>{ return User.fuzzySearch(name) } 导出函数fuzzySearchUser(名称:string):查询{ 返回User.fuzzySearch(名称) } 现在,在上面的返回行中获取以下Typescript错误: Prope

在我的mongoose模式中,我使用如下库:

然后在服务中,我使用它如下:

export function fuzzySearchUser(name: string): Query<Array<IUser>>{
    return User.fuzzySearch(name)
}
导出函数fuzzySearchUser(名称:string):查询{
返回User.fuzzySearch(名称)
}
现在,在上面的返回行中获取以下Typescript错误:

Property 'fuzzySearch' does not exist on type 'Model<IUser, {}>'.ts(2339)
类型“Model”.ts(2339)上不存在属性“fuzzySearch”
如果我将其作为带有类型函数的属性添加到IUser接口,并且也无法将其添加到架构中,那么这将没有任何帮助


(接口IUser扩展了mongoose.Document)

您需要创建一个打字文件,因为这个库不提供打字。试试这个

打字/猫鼬模糊搜索

declare module 'mongoose-fuzzy-search' {
  import { Document, DocumentQuery, Model, Schema } from 'mongoose'

  export interface MongooseFuzzyOptions<T> {
    fields: (T extends Object ? keyof T : string)[]
  }

  export interface MongooseFuzzyModel<T extends Document, QueryHelpers = {}>
    extends Model<T, QueryHelpers> {
    fuzzySearch(
      search: String,
      callBack?: (err: any, data: Model<T, QueryHelpers>[]) => void
    ): DocumentQuery<T[], T, QueryHelpers>
  }

  function fuzzyPlugin<T>(schema: Schema<T>, options: MongooseFuzzyOptions<T>): void

  export default fuzzyPlugin
}
声明模块“mongoose模糊搜索”{
从“mongoose”导入{文档、文档查询、模型、架构}
导出接口MongooseFuzzyOptions{
字段:(T扩展对象?T:string的键)[]
}
导出接口MongooseFuzzyModel
扩展模型{
模糊搜索(
搜索:字符串,
回调?:(错误:any,数据:Model[])=>void
):DocumentQuery
}
函数fuzzyPlugin(模式:schema,选项:MongooseFuzzyOptions):void
导出默认fuzzyPlugin
}
然后使用MogooseFuzzyModel声明您的模型:

export const User = mongoose.model<UserModel>('User', UserSchema) as MongooseFuzzyModel<UserModel>
export const User=mongoose.model('User',UserSchema)作为MongooseFuzzyModel
export const User = mongoose.model<UserModel>('User', UserSchema) as MongooseFuzzyModel<UserModel>