You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mongoose Paginate报错:this.count is not a function 求助

关于mongoose paginate分页报错TypeError: this.count is not a function的问题分析

报错信息

TypeError: this.count is not a function
    at Function.paginate 

你的代码

分页调用代码

Stock.paginate({},{page, limit} ,function(err,result){
        if (err) {
            return res.status(500).json({ message: 'Error occurred while fetching users.' });
        }
        const { docs, total, limit, page, pages } = result;
        // console.log(docs)
        return res.json({ stock: docs, total, limit, page, pages });
    })

Schema与插件注册代码

const StockSchema = new mongoose.Schema(
  {
    item: {
      type: String,
    },
    quantity: {
      type: Number,
    }
  }
);

StockSchema.plugin(mongoosePaginate)
// mongoosePaginate(StockSchema);

module.exports = mongoose.model("Stock", StockSchema);

可能的错误原因及解决方法

  • 依赖版本不兼容
    旧版mongoose-paginate插件依赖已被Mongoose废弃的count()方法,而Mongoose 5.x及以上版本已移除该方法,改用countDocuments()。如果你的Mongoose版本较新,但安装的是旧版分页插件,就会触发这个报错。
    解决:卸载旧版插件,安装新版mongoose-paginate-v2,并修改导入和注册代码:

    npm uninstall mongoose-paginate
    npm install mongoose-paginate-v2
    

    然后修改Schema文件:

    const mongoosePaginate = require('mongoose-paginate-v2');
    StockSchema.plugin(mongoosePaginate);
    
  • 插件注册时机错误
    如果在创建模型之后才注册插件,插件不会生效,导致paginate方法无法正确绑定模型的查询方法,进而出现this.count不存在的问题。
    解决:确保在调用mongoose.model()之前完成插件注册,你的当前代码顺序是对的,但可以检查是否有其他地方提前初始化了Stock模型。

  • 参数格式或类型错误
    检查page和limit是否为有效的数字类型,如果传入的是字符串或undefined,可能导致插件内部调用count方法时出现异常。
    解决:在调用paginate前,先将page和limit转为数字:

    const pageNum = parseInt(page) || 1;
    const limitNum = parseInt(limit) || 10;
    Stock.paginate({}, { page: pageNum, limit: limitNum }, function(err, result) {
      // ... 后续代码
    });
    
  • 插件导入错误
    确认你导入的分页插件名称是否正确,比如如果安装的是mongoose-paginate-v2,但导入时还是用了mongoose-paginate,会导致插件无法正常注册。
    解决:核对package.json中的依赖名称,确保导入语句与依赖名称一致。

内容的提问来源于stack exchange,提问作者Tech de Enigma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:45:07