目前,我有这种混淆,即在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>
答案 0 :(得分:1)
您可以在客户端进行分页,这样您就可以从服务器获取所有产品,但在客户端上只显示五个。 它允许您计算所有数据的平均值或其他计算值。它还允许您过滤和排序所有数据。
如果您有大量数据,客户端第一次需要很长时间才能从服务器加载数据,因此对于大量数据而言,这可能不是正确的方法,你可能想要在chuncks中加载数据,也许在后台加载数据 使用服务器执行计算也可能在后台进行 - 优化。
您可以找到服务器/客户端pagentaion https://dzone.com/articles/pagination-server-side-or-clie
的优缺点