Strapi v3默认数据库方法有哪些?如何访问Mongoose方法?
Strapi v3 访问模型Mongoose方法指南
问题原因解析
Strapi v3 自动生成的服务层(strapi.services.[model])仅封装了框架预设的方法(如find、create、update、delete等),不直接暴露Mongoose原生方法,这就是你调用findMany时报错的核心原因。
访问Mongoose原生方法的正确方式
要调用模型对应的所有Mongoose原生方法,需通过strapi.models.[model].model获取Mongoose模型实例,之后即可使用所有Mongoose支持的模型方法。
以你的article模型为例:
// 获取Mongoose模型实例 const ArticleMongooseModel = strapi.models.article.model; // 调用Mongoose原生findMany方法 const targetArticles = await ArticleMongooseModel.findMany({ offset: 10, limit: 10, where: { id: ctx.query.id } });
也可以使用Mongoose链式查询语法:
const targetArticles = await ArticleMongooseModel.find({ _id: ctx.query.id }) .skip(10) .limit(10);
Strapi服务层方法的正确用法
你能正常运行的strapi.services.article.find(ctx.query),使用的是Strapi封装后的查询方法,它的参数格式与Mongoose原生方法不同,支持_start(对应偏移量)、_limit、_where等参数,实现你需求的写法如下:
strapi.services.article.find({ _start: 10, _limit: 10, id: ctx.query.id });
文档参考说明
Strapi v3官方文档虽未单独罗列可访问的Mongoose方法,但只要通过上述方式获取到Mongoose模型实例,所有Mongoose官方文档中记载的模型方法均可直接调用。
内容的提问来源于stack exchange,提问作者user11092881
相关产品推荐
相关产品推荐

