How to add unique Id to each record in your local/custom database in Node.js ? - GeeksforGeeks

18 Jul, 2020
The custom database signifies the local database in your file system. There are two types of database ‘SQL’ and ‘NoSQL’. In SQL database data are stored as table manner and in Nosql database data are stored independently with some particular way to identify each record independently. We can also create our own database or datastore locally in Nosql manner. To store the information in a NoSQL manner, we have to add a unique Id to each record so that each record can be identified independently.
There are some steps involve in creating the local database and add records with unique Id to it. These steps are as follows:
Create package.json file in root of project directory.Command to create package.json filenpm init -y
npm init -y
Install express and body-parser package.Command to install packagesnpm install express body-parser
npm install express body-parser
Create a GET route to show the form (HTML form to submit the information to the database).
Create the subsequent post route to handle the form submission request.
Set the server to run on a specific port(Developer’s port – 3000).
Create a repository file and add all the logic related to creating local database.
Create a method in repository file to add a unique alphanumeric id to each record.
Create a method in repository file to add each unique record into the database in json format.
This example illustrates how to create a local database and add records to it with a unique id.
Filename: 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 dataapp.use(bodyParser.urlencoded({extended : true}))  // Get route to display HTML formapp.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 databaseapp.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 setupapp.listen(port, () => {  console.log(`Server start on port ${port}`)})
Filename: repository.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')
Package.json file:
Step to run this programRun index.js file using the following command:
node index.js
Form to submit the responses:Note: Here three responses are submitted one after other and all the responses are stored in datastore.json file.
Redirected page after submitting the request:
Output:
Database:
Note: For the first time running the program database(datastore.json) file not exist in the project directory, it created dynamically after running the program and store the submitted response. After that, all the submitted responses are appended in the database one by one.
Node.js-Misc
Node.js
Web Technologies
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
How to install the previous version of node.js and npm ?
Difference between promise and async await in Node.js
How to use an ES6 import in Node.js?
Express.js res.sendFile() Function
Mongoose | findByIdAndUpdate() Function
Top 10 Front End Developer Skills That You Need in 2022
Top 10 Projects For Beginners To Practice HTML and CSS Skills
How to fetch data from an API in ReactJS ?
How to insert spaces/tabs in text using HTML/CSS?
Difference between var, let and const keywords in JavaScript