【问题标题】:Typescript error when using fuzzySearch with mongoose将模糊搜索与猫鼬一起使用时出现打字稿错误
【发布时间】:2020-07-09 05:26:05
【问题描述】:

在我的猫鼬模式中,我使用如下库:https://github.com/VassilisPallas/mongoose-fuzzy-searching

UserSchema.plugin(mongoose_fuzzy_searching, { fields: ['name'] });

然后在服务中我这样使用它:

export function fuzzySearchUser(name: string): Query<Array<IUser>>{
    return User.fuzzySearch(name)
}

现在在上面的返回行中得到以下 Typescript 错误:

Property 'fuzzySearch' does not exist on type 'Model<IUser, {}>'.ts(2339)

如果我将它作为具有类型函数的属性添加到 IUser 接口并且我也无法将其添加到架构中,这将无济于事。

(接口 IUser 扩展了 mongoose.Document)

【问题讨论】:

    标签: typescript mongoose


    【解决方案1】:

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

    typings/mongoose-fuzzy-search

    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
    }
    

    然后使用 MogooseFuzzyModel 声明您的模型:

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

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 2016-06-14
      • 2021-03-09
      • 2020-10-29
      • 2021-03-13
      • 1970-01-01
      • 2017-01-20
      • 2014-02-15
      • 2018-10-09
      相关资源
      最近更新 更多