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.
Hay algunos pasos involucrados en la creación de la base de datos local y la creación, búsqueda y actualización de la información de la misma. Estos pasos son los siguientes:
- Cree el archivo package.json en la raíz del directorio del proyecto usando el siguiente comando:
npm init -y
- Instale el paquete express y body-parser usando el siguiente comando:
npm install express npm install body-parser
- Cree una ruta POST para solicitar una base de datos de usuario particular usando id.
- 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 actualizar un registro de la base de datos usando id.
Ejemplo: Este ejemplo ilustra cómo actualizar un registro en una base de datos personalizada local.
Nombre de archivo: index.js
const express = require('express') const bodyParser = require('body-parser') const repo = require('./repository') const updateTemplet = require('./updateRecordForm') const app = express() const port = process.env.PORT || 3000 // The body-parser middleware to parse form data app.use(bodyParser.urlencoded({extended : true})) // Home page app.get('/', (req, res) => { const id = '32b3a9f5d8f33a8d' res.send(` <form method='GET' action='./update/${id}'> <button>Update Record</button> </form> `) }) // Get route to show update form app.get('/update/:id', async (req, res) => { const id = req.params.id const temp = await (updateTemplet({id})) res.send(temp) }) // Post route to update record app.post('/update/:id', async (req, res) => { const id = req.params.id const record = await repo.update(id, req.body) console.log(`Record Updated : \n${JSON.stringify(record, null, 2)}`) res.send('Record Updated') }) // Server setup app.listen(port, () => { console.log(`Server start on port ${port}`) })
Nombre de archivo: repository.js Este archivo contiene toda la lógica para actualizar un registro de base de datos personalizada.
// Importing node.js file system, crypto module const fs = require('fs') class Repository { constructor(filename) { // The 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, '[]') } } // The findById method used in the example async findById(id) { // Read all 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) // Search for required record const requiredRecord = objRecord .find(record => record.id === id) return requiredRecord } // Update Method async update(id, attrs) { // Read all file contents of the datastore const jsonRecords = await fs.promises.readFile(this.filename, { encoding: 'utf8' }) // Parsing json records in javascript // object type records const records = JSON.parse(jsonRecords) // Find target record to update with id const record = records.find( eachRecord => eachRecord.id === id) // If given id not belongs to any // record in database if (!record) { throw new Error(`Id '${id}' not found`) } // Update record Object.assign(record, attrs) // Write all records back to the // custom database await fs.promises.writeFile( this.filename, JSON.stringify(records, null, 2) ) return record } } // The 'datastore.json' file created at // runtime if it not exist, here we try // to update information of database // that means database(datastore.json) // already exist and there are also // records in it. module.exports = new Repository('datastore.json')
Nombre de archivo: updateRecordForm.js
const repo = require('./repository') module.exports = async ({ id }) => { const record = await repo.findById(id) return ` <div> <form method='POST'> <div> <div> <label id='email'>Username</label> </div> <input type='text' name='email' value=${record.email} for='email'> </div> <div> <div> <label id='password'>Password</label> </div> <input type='password' name='password' value=${record.password} for='password'> </div> <div> <div> <label id='name'>Name</label> </div> <input type='text' name='name' value=${record.name} for='name'> </div> <button>Update</button> </div> </form> </div> ` }
Nombre de archivo: paquete.json
Ejecute el archivo index.js con el siguiente comando:
node index.js
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. Pero aquí intentamos actualizar un registro en la base de datos, lo que significa que el programa se supone que ya se ejecutó una vez y algunos registros se agregan a la base de datos que intentamos actualizar.
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