Property 'cache' does not exist on type 'Query<any[], any, {}, any>'. Did you mean 'catch'?
这可以简单的说Query.cache()不是一个函数。
"mongoose": "^7.0.0",
"recachegoose": "^9.2.1",
(使用打字稿)
中间件.ts
import mongoose from 'mongoose';
import cachegoose from 'recachegoose';
cachegoose(mongoose, {
engine: 'memory'
});
fetch.ts
results = await model.find({ key: queries.id }).cache(20);
const tempModel: mongoose.Model<any> = await this.model("collectionName");
results = await tempModel.find({ key: queries.id }).cache(20);
^^^^^
Property 'cache' does not exist on type 'Query<any[], any, {}, any>'. Did you mean 'catch'?
我用过
mongoose": "5.10.9
和
recachegoose": "^8.1.0"
没有任何问题并且工作良好,
之后是升级mongoose 6.0.0
然后遇到了上述问题,我检查了
recachegoose": "^9.2.1"
错误尚未修复
我们的最终决定是在 Mongoose 版本升级中对模型注册部分进行了修改。旧的 mongoose 版本当我们在 connection.model 中注册时,mongoose 在其 mongoose.model 本身上注册该模型。但在更新版本中,如果我们使用连接时。 model 该模型仅注册连接。该问题来自 Recachegoose,因为 Recachegoose npm 包仅检查 Mongoose 模型中的模型。 我们的解决方案是强制注册我们的模型连接。模型和猫鼬。型号。
告诉打字稿 .cache 方法存在于 mongoose 模型上: 将 mongoose.d.ts 添加到您的项目中并添加以下代码:
declare module "mongoose" {
interface Query<T, DocType extends Document, THelpers = {}> {
cache(ttl?: number, customKey?: string): this;
}
}