Отображение нумерации товаров для обычных пользователей для совершения покупок (не на странице администрирования товара) Отображение 10 товаров за один раз с использованием нумерации страниц
То есть вы должны читать только 10 товаров из Firestore одновременно.
index. js (часть кода магазина)
app.get('/', auth, async (req, res) =>{
// console.log('============', req.decodedIdToken ? req.decodedIdToken.email : 'no user')
const cartCount = req.session.cart ? req.session.cart.length : 0
const coll = firebase.firestore().collection(Constants.COLL_PRODUCTS)
try {
let products = []
const snapshot = await coll.orderBy("name").get()
snapshot.forEach(doc => {
products.push({id: doc.id, data: doc.data()})
})
res.setHeader('Cache-Control', 'private');
res.render('storefront.ejs', {error: false, products, user: req.decodedIdToken, cartCount})
} catch (e) {
res.setHeader('Cache-Control', 'private');
res.render('storefront.ejs', {error: e, user: req.decodedIdToken, cartCount})
}
storefront.e js
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<%- include('partials/header.ejs') %>
<title>Store Front</title>
</head>
<body>
<%- include('partials/nav.ejs', {page: 'storefront', user}) %>
<h1>My Store</h1>
<% if (error) { %>
<p style="color: red"><%= JSON.stringify(error) %></p>
<% } else { %>
<% for (let p of products) { %>
<div class="card" style="width: 18rem; display: inline-block">
<img src="<%= p.data.image_url %>" class="card-img-top">
<div class="card-body">
<h5 class="card-title"><%= p.data.name %></h5>
<p class="card-text">$(<%= p.data.price %>)<br><%= p.data.summary %></p>
<form action="/b/add2cart" method="post">
<input type="hidden" name="docId" value="<%= p.id %>">
<button type="submit" class="btn btn-primary">Add to Shoppingcart</button>
</form>
</div>
</div>
<% } %>
<% } %>
<%- include('partials/scripts.ejs') %>
</body>
</html>