如何在mongoose中对_id数组进行分页?

时间:2017-07-03 04:49:25

标签: node.js mongodb mongoose pagination

目前,我有这种混淆,即在Schema中对一组项目进行分页。

从技术上讲,每个用户都有一个购物车,我想要对购物车的商品进行分页。例如,假设购物车中存储了18个商品。我想将购物车分成5个项目。

这是架构

const UserSchema = new Schema({
  email: { type: String, unique: true, lowercase: true},
  cart: [{
     type: Schema.Types.ObjectId, ref: 'Product'
  }],
});

这是路线

我目前的做法

router.get('/cart', (req, res, next) => {
  User.findOne({ _id: req.user._id })
    .populate({
    path: 'cart',
    options: { limit: 5 }
  })
  .exec((err, user) => {

    res.render('order/cart', { user: user });
  });
});

我当前的方法肯定会将显示的项目从18个项目限制为仅5个项目,但这会产生一个新问题,现在我无法计算购物车的总价格,因为每个请求仅限于5个项目。 / p>

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以在客户端进行分页,这样您就可以从服务器获取所有产品,但在客户端上只显示五个。 它允许您计算所有数据的平均值或其他计算值。它还允许您过滤和排序所有数据。

如果您有大量数据,客户端第一次需要很长时间才能从服务器加载数据,因此对于大量数据而言,这可能不是正确的方法,你可能想要在chuncks中加载数据,也许在后台加载数据 使用服务器执行计算也可能在后台进行 - 优化。

您可以找到服务器/客户端pagentaion https://dzone.com/articles/pagination-server-side-or-clie

的优缺点