typescript - 将模糊搜索与猫鼬一起使用时出现打字稿错误
问题描述
在我的猫鼬模式中,我使用如下库: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)
解决方案
您需要创建一个打字文件,因为这个库不提供打字。试试这个。
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>
推荐阅读
- linux - 在 Linux 中设置路径变量时出错
- github - Github - 锁定 Travis 配置 - 防止合作者更改它
- excel - 如果单元格值为#N/A,如何在excel单元格中保持空白
- javascript - 如何使分组最快,前提是数组中的数据也显示对象nodeJs
- sql-server - T-SQL,四舍五入到最接近的 0.5
- java - 添加数组元素时的条件检查
- python - “NoneType”对象没有属性“get”:AttributeError
- java - 将新边添加到 Graph 并检查总权重是否减少
- typescript - 方括号 [Type] 语法记录在哪里?
- sql-server - SQL 2012 管理和客户端工具版本降级