Node Express est un framework JavaScript qui peut être utilisé pour développer une variété d'applications Web. Il peut être utilisé pour développer des API Web pouvant être utilisées par diverses applications clientes (application Web ou applications mobiles). La pagination des données doit être implémentée sur les réponses API qui impliquent de longues listes de données. Cet article vous montrera étape par étape comment la pagination des données est implémentée dans les API Node Express.
Cet exemple concerne une application d'actualités.
Étape 1 : Créez un dossier vide appelé newsapp .
$ mkdir newsapp
cd newsapp
$ npm init
$ npm install express --save
$ npm install mongoose --save
const mongoose = require('mongoose')
const mongoose = require('mongoose')
const ArticleSchema = new mongoose.Schema({
title: {
type: String,
required: true
},
content: {
type: String,
required: true
}
})
module.exports = mongoose.model('Article', ArticleSchema)
const mongoose = require('mongoose')
const ArticleSchema = new mongoose.Schema({
title: {
type: String,
required: true
},
content: {
type: String,
required: true
}
})
module.exports = mongoose.model('Article', ArticleSchema)
const express = require('express')
const newsapp = express()
const mongoosedb = require('mongoose')
const article = require('./articles')
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});
const db = mongoose.connection
db.once('open', async () => {
if (await article.countDocuments().exec() > 0) return
Promise.all([
article.create({ title: 'article 1',
content: "News content for article 1" }),
article.create({ title: 'article 2',
content: "News content for article 2" }),
article.create({ title: 'article 3',
content: "News content for article 3" }),
article.create({ title: 'article 4',
content: "News content for article 4" }),
article.create({ title: 'article 5',
content: "News content for article 5" }),
article.create({ title: 'article 6',
content: "News content for article 6" }),
article.create({ title: 'article 7',
content: "News content for article 7" }),
article.create({ title: 'article 8',
content: "News content for article 8" }),
article.create({ title: 'article 9',
content: "News content for article 9" }),
article.create({ title: 'article 10',
content: "News content for article 10" }),
article.create({ title: 'article 11',
content: "News content for article 11" }),
article.create({ title: 'article 12',
content: "News content for article 12" }),
article.create({ title: 'article 13',
content: "News content for article 13" })
]).then(() => console.log('Added Articles'))
})
function paginatedNewsArticles(model) {
return async (request, response, next) => {
const querypage = parseInt(request.query.page)
const querylimit = parseInt(request.query.limit)
}}
const firstIndex = (page - 1) * limit
const lastIndex = page * limit
if (firstIndex > 0) {
paginatedArticlesList.previous = {
previouspage: page - 1,
limit: limit
}
}
if (lastIndex < await model.countDocuments().exec()) {
paginatedArticlesList.next = {
nextpage: page + 1,
limit: limit
}
}
const express = require('express')
const newsapp = express()
const mongoosedb = require('mongoose')
const article = require('./articles')
mongoose.connect('mongodb://localhost/pagination', { useNewUrlParser: true, useUnifiedTopology: true })
const db = mongoose.connection
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', async () => {
if (await article.countDocuments().exec() > 0) return
Promise.all([
article.create({ title: 'article 1',
content: "News content for article 1" }),
article.create({ title: 'article 2',
content: "News content for article 2" }),
article.create({ title: 'article 3',
content: "News content for article 3" }),
article.create({ title: 'article 4',
content: "News content for article 4" }),
article.create({ title: 'article 5',
content: "News content for article 5" }),
article.create({ title: 'article 6',
content: "News content for article 6" }),
article.create({ title: 'article 7',
content: "News content for article 7" }),
article.create({ title: 'article 8',
content: "News content for article 8" }),
article.create({ title: 'article 9',
content: "News content for article 9" }),
article.create({ title: 'article 10',
content: "News content for article 10" }),
article.create({ title: 'article 11',
content: "News content for article 11" }),
article.create({ title: 'article 12',
content: "News content for article 12" }),
article.create({ title: 'article 13',
content: "News content for article 13" })
]).then(() => console.log('Added Articles'))
})
newsapp.get('/article', paginatedNewsArticles(article), (request, response) => {
response.json(response.paginatedResults)
})
function paginatedNewsArticles(model) {
return async (request, response, next) => {
const querypage = parseInt(request.query.page)
const querylimit = parseInt(request.query.limit)
const firstIndex = (page - 1) * limit
const lastIndex = page * limit
const paginatedArticlesList = {}
if (firstIndex > 0) {
paginatedArticlesList.previous = {
previouspage: page - 1,
limit: limit
}
}
if (lastIndex < await model.countDocuments().exec()) {
paginatedArticlesList.next = {
nextpage: page + 1,
limit: limit
}
}
try {
paginatedArticlesList.results = await
model.find().limit(limit).skip(firstIndex).exec()
response.paginatedArticles = paginatedArticlesList
next()
} catch (e) {
response.status(500).json({ message: e.message })
}
}}
newsapp.listen(3000)
Et là, nous l'avons. J'espère que vous avez trouvé cela utile. Je reviendrai avec des articles plus intéressants. Merci pour la lecture.
Plus de contenu sur plainenglish.io
Lorsque vous faites une demande à facebook.com, votre ordinateur recherche le nom de domaine pour traduire ce nom de domaine en une adresse IP afin que votre ordinateur puisse établir cette connexion.
Embarquez pour un voyage passionnant d'innovation et de succès en exploitant le potentiel inexploité de ces surprenantes plateformes sans code. Permettez-moi de partager avec vous l'histoire de Sapna, une remarquable femme entrepreneure.
Passer à une nouvelle carrière peut être extrêmement difficile si vous essayez de le faire seul. Il est important de trouver des partenaires de responsabilité qui sont au même niveau d'apprentissage que vous, qui partagent des objectifs, une ténacité et un dynamisme similaires.
"Hey Siri, joue Me Dive d'Olivia Dean." C'était en mai 2021 lorsque j'ai commencé mon stage à la Future Academy Africa à Akure, au Nigeria.
J'étais récemment sur Linkedin, le plus grand réseau social professionnel au monde, et j'ai trouvé des messages de designers indépendants que je suis et qui ont attiré mon attention. Ils ont tous posté des photos d'avions, sur la plage avec leurs ordinateurs portables, de piscines et de bureaux avec une vue imprenable.
Dans le monde hyper-connecté d'aujourd'hui, les systèmes médiatiques jouent un rôle central dans la formation de l'opinion publique et, par conséquent, dans la prise de décision démocratique. Dans son analyse approfondie de l'économie politique de la communication, le chercheur Robert McChesney remet en question la sagesse conventionnelle et présente ce qu'il appelle les « cinq vérités » sur les médias.