在 Mongodb 中执行查找操作后,如何将分页结果作为响应发送?

How to send paginated result as response after performing find operation in Mongodb?

我要在前端的 table 中显示此查询,所以我使用了 paginate,它工作正常

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”进行分页

嗨,我想你错过了在模型部分添加分页插件。

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);
    }