在mongo中如何获取表中记录的当前位置以及分页的总记录?

时间:2017-10-10 06:58:01

标签: mongodb mongoose graphql

我正在尝试返回创建分页列表。我使用graphql来查询数据。通过我的查询,我传递了我需要的记录数(在一个名为first的变量中)和最后一个获取记录的ID(在一个名为after的变量中)。现在我设法写了一个查询(请注意,我用mongoose)来获取记录。现在我需要做的是获取相关信息以执行hasNextPagehasPreviousPagecurrentPagetotalPages这样的分页。

要获取大部分这些信息,我需要获取数据库中的记录总数。为此,我需要发送另一个db请求。

我还需要知道表中记录的位置。不知道怎么做。

以下是查询:

new Promise((resolve, reject) =>
  Company.where('_id')
    .gt(after)
    .limit(first)
    .lean()
    .exec((error, doc) => {
      if (error) {
        reject(error);
      }

      resolve({
        edges: doc,
        pageInfo: {
          hasNextPage: '...',
          hasPreviousPage: '...',
          currentPage: '...',
          totalPages: '...'
        }
      });
    }))

知道如何有效地做到这一点吗?

1 个答案:

答案 0 :(得分:4)

您可以尝试使用此模块mongoose-paginate

这里我用的是分页,

var current = req.query.filter.current;
var limit = req.query.filter.limit;
console.log('params.query.filter.current',current);
var skip = Number(limit)*Number(current)-Number(limit);
console.log('skip::',skip);
    Cours.find({'attributes.version.status': true}).skip(skip).limit(limit).sort({_id:'asc'}).exec(function (err, resulta) {
        if (err) {
            console.log('erreur trouverCours');
            res.json({
                protecteds: err
            });
        }
        console.log('cours ::', resulta);
        res.json({
            "data": resulta
        });
    });