¿Cómo agregar una identificación única a cada registro en su base de datos local/personalizada en Node.js?

La base de datos personalizada significa la base de datos local en su sistema de archivos. Hay dos tipos de base de datos ‘SQL’ y ‘NoSQL’. En la base de datos SQL, los datos se almacenan en forma de tabla y en la base de datos Nosql, los datos se almacenan de forma independiente con alguna forma particular de identificar cada registro de forma independiente. También podemos crear nuestra propia base de datos o almacén de datos localmente en forma de Nosql. Para almacenar la información de manera NoSQL, debemos agregar una identificación única a cada registro para que cada registro pueda identificarse de forma independiente.

Hay algunos pasos involucrados en la creación de la base de datos local y agregarle registros con una identificación única. Estos pasos son los siguientes:

  • Cree el archivo package.json en la raíz del directorio del proyecto.
    Comando para crear el archivo package.json
    npm init -y
  • Instale el paquete express y body-parser.
    Comando para instalar paquetes
    npm install express body-parser
  • Cree una ruta GET para mostrar el formulario (formulario HTML para enviar la información a la base de datos).
  • Cree la ruta de publicación posterior para manejar la solicitud de envío del formulario.
  • Configure el servidor para que se ejecute en un puerto específico (Puerto del desarrollador: 3000).
  • Cree un archivo de repositorio y agregue toda la lógica relacionada con la creación de una base de datos local.
  • Cree un método en el archivo del repositorio para agregar una identificación alfanumérica única a cada registro.
  • Cree un método en el archivo del repositorio para agregar cada registro único a la base de datos en formato json.

Este ejemplo ilustra cómo crear una base de datos local y agregarle registros con una identificación única.

Nombre de archivo: index.js

const express = require('express')
const bodyParser = require('body-parser')
const repo = require('./repository')
  
const app = express()
  
const port = process.env.PORT || 3000
  
// The body-parser middleware 
// to parse form data
app.use(bodyParser.urlencoded({extended : true}))
  
// Get route to display HTML form
app.get('/signup', (req, res) => {
  res.send(`
    <div>
     <form method='POST'>
       <div>
         <div>
           <label id='email'>Username</label>
         </div> 
         <input type='text' name='email' 
               placeholder='Email' 
               for='email'>
       </div>
      
       <div>
         <div>
           <label id='password'>Password</label>
         </div>
         <input type='password' name='password'
                   placeholder='Password' 
         for='password'>
       </div>
  
       <div>
         <button>Sign Up</button>
       </div>
     </form>
    </div> 
   `)
});
  
// Post route to handle form submission
// logic and add data to the database
app.post('/signup', async (req, res) => {
  const {email, password} = req.body
  
  const addedRecord = await 
    repo.createNewRecord({email, password})
  
  console.log(`Added Record : 
    ${JSON.stringify(addedRecord, null, 4)}`)
    
  res.send("Information added to the "
        + "database successfully.")
})
  
// Server setup
app.listen(port, () => {
  console.log(`Server start on port ${port}`)
})

Nombre de archivo: repositorio.js

// Importing node.js file system, crypto module 
const fs = require('fs')
const crypto = require('crypto')
  
class Repository {
  
  constructor(filename) {
      
    // Filename where datas are going to store
    if(!filename) {
      throw new Error(
'Filename is required to create a datastore!')
    }
  
    this.filename = filename
  
    try {
      fs.accessSync(this.filename)
    } catch (err) {
  
      // If file not exist
      // it is created with empty array
      fs.writeFileSync(this.filename, '[]')
    }
  }
  
  // Logic to add data or record
  async createNewRecord(attributes) {
      
    // Assign unique Id to each record
    attributes.id = this.generateUniqueID()
  
    // Read filecontents of the datastore
    const jsonRecords = await 
      fs.promises.readFile(this.filename, {
      encoding : 'utf8'
    })
  
    // Parsing JSON records in JavaScript
    // object type records
    const objRecord = JSON.parse(jsonRecords)
  
    // Adding new record
    objRecord.push(attributes)
  
    // Writing all records back to the file
    await fs.promises.writeFile(
      this.filename,
      JSON.stringify(objRecord, null, 2)   
    )
  
    return attributes;
  }
  
  // Method to generate unique ID 
  generateUniqueID() {
    return crypto.randomBytes(8).toString('hex')
  }
}
  
// The 'datastore.json' file created at runtime 
// and all the information provided via signup
// form store in this file in JSON format.
module.exports = new Repository('datastore.json')

Archivo paquete.json:

Paso para ejecutar este programa
Ejecute el archivo index.js usando el siguiente comando:

node index.js

Formulario para enviar las respuestas:
Nota: Aquí se envían tres respuestas una tras otra y todas las respuestas se almacenan en el archivo datastore.json.

Página redirigida después de enviar la solicitud:

Producción:

Base de datos:

Nota: Por primera vez, el archivo de la base de datos del programa (datastore.json) no existe en el directorio del proyecto, se creó dinámicamente después de ejecutar el programa y almacenar la respuesta enviada. Después de eso, todas las respuestas enviadas se agregan a la base de datos una por una.

Publicación traducida automáticamente

Artículo escrito por hunter__js 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 *