How to add records in your own local/custom database in Node.js ?

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.

There are some steps involve in creating the local database and add records to it. These steps are as follows:

  • Create package.json file in the root of the project directory.
    Command to create package.json file

    npm init -y
  • Install express and body-parser package.
    Command to install packages

    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 database and storing data to it.

This example creates a local database named ‘datastore.json’ and stores the user’s information to it.



Filename: index.js

filter_none

edit
close

play_arrow

link
brightness_4
code

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}`)
})

chevron_right


Filename: repository.js

filter_none

edit
close

play_arrow

link
brightness_4
code

// Importing node.js file system module 
const fs = require('fs')
  
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
  async createNewRecord(attributes) {
  
    // 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;
  }
  
}
  
// The 'datastore.json' file created at
// runtime and all the information 
// provided via signup form store in
// this file in JSON formet.
module.exports = new Repository('datastore.json')

chevron_right


Package.json file:

Steps to run the program:
Run the 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.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.