首页 > 解决方案 > 在 Mongodb 中执行查找操作后如何发送分页结果作为响应?

问题描述

我有这个查询要显示在前端的表格中,所以我使用了工作正常的分页

tableSchema.statics.getn = (query, options) => {
  return mongoose.model(MODEL_NAME).paginate(query, options);
};

但是当我尝试执行搜索查询时,我无法对其执行分页。有什么方法可以将响应作为分页形式发送到我尝试遵循代码的所有搜索查询

tableSchema.statics.search = query => {
  const Id = Number(query);
  const isNumeric = value => /^\d+$/.test(value);

  if (!isNumeric(query)) {
    if (query.includes("@")) {
      const regex = new RegExp(query, "i");
      return mongoose.model(MODEL_NAME).find({ "recipies.to": regex }).paginate(query);
    }
    return mongoose.model(MODEL_NAME).find({ "temp.name": query });
  }
  return mongoose.model(MODEL_NAME).find({ recipies: { Id } });
};

分页不是一个函数,这给我带来了错误。我尝试将查找查询结果存储在对象中,然后执行分页仍然无法正常工作。

我正在使用“mongoose-paginate-v2”进行分页

标签: node.jsmongodbmongoosepaginationmongoose-schema

解决方案


嗨,我认为您错过了在模型部分添加分页插件。

const mongoose = require('mongoose');
const mongoosePaginate = require('mongoose-paginate-v2');

const mySchema = new mongoose.Schema({
  /* your schema definition */
});

mySchema.plugin(mongoosePaginate);

const myModel = mongoose.model('SampleModel', mySchema);

myModel.paginate().then({}); // Usage

您需要将mongoosePaginate模型添加为插件。

let options = {
    sort: { createdOn: 1 },
    page: 1,
    limit: 10
};
ModelName.paginate({ 'recipies.to': 'value' }, options, function (err, result) {
    if (err) {
        console.log(err);
    } else {
       // Here you will get paginate array please console and check
       console.log(result);
    }

推荐阅读