Typescript 将fuzzySearch与mongoose一起使用时出现类型脚本错误
在我的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
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>