¿Cómo implementar el contador de visitantes en Node.js?

Vamos a implementar el Contador de visitantes usando express y mongoose en nodeJS . El beneficio de usar mongoose para almacenar el conteo en la base de datos MongoDB sería que el conteo no se perdería cuando reiniciamos el servidor. Cada vez que el navegador obtenga esa página, el recuento de visitantes se incrementará en uno (1). Caminemos paso a paso.

Paso 1: Cree un archivo » app.js » e inicialice su proyecto con npm .

npm init

Paso 2: Instale express y mongoose usando npm

npm install express
npm install mongoose

El paquete Express nos ayudaría a crear el servidor y definir las rutas para las requests GET . Mongoose es una biblioteca de modelado de datos de objetos para MongoDB y NodeJS, que nos ayudaría a hablar con nuestra base de datos MongoDB.

Estructura del proyecto: La estructura del proyecto se vería así: 

Estructura del proyecto

Paso 3: comencemos a codificar el archivo » app.js «.

  1. Primero requiere expreso y mangosta
  2. Cree la conexión a la base de datos MongoDB local
  3. Defina el esquema de mangosta para almacenar los registros. Tiene dos campos, uno » nombre » del tipo de datos String y el otro » recuento » del tipo de datos Numérico .
  4. Cree el modelo de mangosta a partir del esquema
  5. Defina la solicitud GET raíz y haga que la aplicación escuche el puerto local.

La solicitud GET tiene un caso especial cuando se accede a la aplicación por primera vez. Para ese caso, necesitamos crear el registro predeterminado con el recuento de visitantes igual a 1 (uno). Para otras ocasiones, simplemente incremente su valor en uno.

Usamos la función findOne() de mangosta que toma un parámetro como condición de búsqueda. Devuelve el primer registro que coincide con nuestra condición. Si ningún registro coincide, devuelve un valor nulo . Ahora veamos el código completo del archivo “ app.js ”.

app.js

// Requiring express to handle routing
const express = require('express')
  
// Creating app 
const app = express()
  
// Requiring mongoose to handle mongoDB Database
const mongoose = require('mongoose')
  
// Connecting to local MongoDB
mongoose.connect("mongodb://localhost:27017/visitCounterDB", {
    useNewUrlParser: true
});
  
// Creating visitor Schema to hold the
// count of visitors
const visitorSchema = new mongoose.Schema({
    name: String,
    count: Number
})
  
// Creating Visitor Table in visitCounterDB
const Visitor = mongoose.model("Visitor",visitorSchema)
  
// Get request to app root
app.get('/', async function(req,res){
      
    // Storing the records from the Visitor table
    let visitors = await Visitor.findOne({name: 'localhost'})
  
    // If the app is being visited first
    // time, so no records
    if(visitors == null) {
          
        // Creating a new default record
        const beginCount = new Visitor({
            name : 'localhost',
            count : 1
        })
  
        // Saving in the database
        beginCount.save()
  
        // Sending thee count of visitor to the browser
        res.send(`<h2>Counter: `+1+'</h2>')
  
        // Logging when the app is visited first time
        console.log("First visitor arrived")
    }
    else{
          
        // Incrementing the count of visitor by 1
        visitors.count += 1;
  
        // Saving to the database
        visitors.save()
  
        // Sending thee count of visitor to the browser
        res.send(`<h2>Counter: `+visitors.count+'</h2>')
  
        // Logging the visitor count in the console
        console.log("visitor arrived: ",visitors.count)
    }
})
  
// Creating server to listen at localhost 3000
app.listen(3000,function(req,res){
  
    // Logging when the server has started
    console.log("listening to server 3000")
})

Paso 4: ahora ejecuta la aplicación

node app.js

Producción:Ahora cargue la aplicación en su navegador presionando http://localhost:3000

Pantalla de salida

Después de cerrar el servidor y reiniciarlo nuevamente, cuando visitamos la página raíz, vimos que el conteo de visitantes se conserva y se incrementa en uno. Estamos registrando todos estos pasos en la consola también para verificar y comprender el resultado.

consola

Publicación traducida automáticamente

Artículo escrito por devrajkumar1903 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *