So erstellen Sie eine API-Daten-Paginierung mit Node Express

Bild von AIOSEO

Node Express ist ein JavaScript-Framework, mit dem eine Vielzahl von Webanwendungen entwickelt werden kann. Es kann verwendet werden, um Web-APIs zu entwickeln, die von verschiedenen Client-Apps (Web-App oder mobile Apps) verwendet werden können. Die Daten-Paginierung muss für API-Antworten implementiert werden, die lange Datenlisten beinhalten. Dieser Artikel zeigt Ihnen Schritt für Schritt, wie die Daten-Paginierung in Node Express-APIs implementiert wird.

In diesem Beispiel geht es um eine Nachrichten-App.

Schritt 1: Erstellen Sie einen leeren Ordner namens 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)

Und da haben wir es. Ich hoffe, Sie fanden dies nützlich. Ich melde mich mit weiteren interessanten Artikeln zurück. Vielen Dank fürs Lesen.

Weitere Inhalte unter plainenglish.io

Suggested posts

Informationen zu Domänennamen finden

Ein Auszug aus Small, Sharp Software Tools von Brian P. Hogan

Informationen zu Domänennamen finden

Wenn Sie eine Anfrage an facebook.com stellen, sucht Ihr Computer nach dem Domänennamen, um diesen in eine IP-Adresse zu übersetzen, damit Ihr Computer diese Verbindung herstellen kann.

Die No-Code-Revolution: Mit Webflow, Framer, Bubble.io den Geschäftserfolg entfesseln

Die No-Code-Revolution: Mit Webflow, Framer, Bubble.io den Geschäftserfolg entfesseln

Begeben Sie sich auf eine spannende Reise voller Innovation und Erfolg und erschließen Sie das ungenutzte Potenzial dieser überraschenden No-Code-Plattformen. Lassen Sie mich eine Geschichte über Sapna erzählen, eine bemerkenswerte Unternehmerin.

Related posts

GRENZENLOSES LEBEN

Wenn man erwachsen wird, wird einem oft gesagt, dass die Welt so ist, wie sie ist, und dass das Leben nur darin besteht, sein Leben in der Welt zu leben, niemals sein Leben zu riskieren, einfach einem festgelegten Weg zu folgen und am Ende zu sterben, und versucht, es nicht zu tun Schlage zu viel gegen die Wände. Aber das ist ein sehr begrenztes Leben.

3 bewährte Möglichkeiten, Ihre Schreibfähigkeiten zu verbessern

Die Vorteile des Schreibens und Strategien, die Ihnen dabei helfen

3 bewährte Möglichkeiten, Ihre Schreibfähigkeiten zu verbessern

Im Jahr 2022, mit der Veröffentlichung von GPT-3, scheinen Schreibfähigkeiten an Bedeutung zu verlieren. Mit KI können auch Menschen mit schlechten Schreibkenntnissen hochwertiges Personal hervorbringen.

Keine Passwörter mehr – wie Passkeys Ihr Passwort ersetzen

Keine Passwörter mehr – wie Passkeys Ihr Passwort ersetzen

Um Unklarheiten zu vermeiden, werden die folgenden Begriffe verwendet: Authentifikator; Das Mobiltelefon, das für die Anmeldung verwendet wird. Website; Die Website oder Anwendung, die der Benutzer verwendet, um den Anmeldeanforderungsdienst zu stellen; Der Anbieter, der die jeweilige Dienstleistung bereitstellt, z

Ist Kunst jemals unpolitisch?

Ist Kunst jemals unpolitisch?

Gestern haben wir die Tür zum diesjährigen Eurovision Song Contest mit einem glitzernden, chaotischen großen Finale geschlossen, bei dem die schwedische Sängerin Loreen die Trophäe mit nach Hause nahm. Sie war damit die erste Frau, die zweimal gewann, und holte die Krone 50 Jahre nach dem Gewinn des Wettbewerbs durch ABBA zurück nach Schweden mit „Waterloo“. Sie entwickelten sich zu einem der größten Acts im Kanon der Popmusik.