使用 mogoose 和 recachegoose 时,nodejs 项目中不存在属性“cache”问题

问题描述 投票:0回答:2
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
2个回答
0
投票

我们的最终决定是在 Mongoose 版本升级中对模型注册部分进行了修改。旧的 mongoose 版本当我们在 connection.model 中注册时,mongoose 在其 mongoose.model 本身上注册该模型。但在更新版本中,如果我们使用连接时。 model 该模型仅注册连接。该问题来自 Recachegoose,因为 Recachegoose npm 包仅检查 Mongoose 模型中的模型。 我们的解决方案是强制注册我们的模型连接。模型和猫鼬。型号。

  • model = connection.model(collectionName, Schema);
  • mongoose.model(model.modelName, model.schema);

0
投票

告诉打字稿 .cache 方法存在于 mongoose 模型上: 将 mongoose.d.ts 添加到您的项目中并添加以下代码:

declare module "mongoose" {
  interface Query<T, DocType extends Document, THelpers = {}> {
    cache(ttl?: number, customKey?: string): this;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.