将模糊搜索与猫鼬一起使用时出现打字稿错误
Posted
技术标签:
【中文标题】将模糊搜索与猫鼬一起使用时出现打字稿错误【英文标题】: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)
【问题讨论】:
【参考方案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>
【讨论】:
以上是关于将模糊搜索与猫鼬一起使用时出现打字稿错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 React useContext 和 useReducer 时出现打字稿错误