How to add unique Id to each record in your 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. 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:
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
app.use(bodyParser.urlencoded({extended : true }))
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>
`)
});
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." )
})
app.listen(port, () => {
console.log(`Server start on port ${port}`)
})
|
Filename: repository.js
const fs = require( 'fs' )
const crypto = require( 'crypto' )
class Repository {
constructor(filename) {
if (!filename) {
throw new Error(
'Filename is required to create a datastore!' )
}
this .filename = filename
try {
fs.accessSync( this .filename)
} catch (err) {
fs.writeFileSync( this .filename, '[]' )
}
}
async createNewRecord(attributes) {
attributes.id = this .generateUniqueID()
const jsonRecords = await
fs.promises.readFile( this .filename, {
encoding : 'utf8'
})
const objRecord = JSON.parse(jsonRecords)
objRecord.push(attributes)
await fs.promises.writeFile(
this .filename,
JSON.stringify(objRecord, null , 2)
)
return attributes;
}
generateUniqueID() {
return crypto.randomBytes(8).toString( 'hex' )
}
}
module.exports = new Repository( 'datastore.json' )
|
Package.json file:
Step to run this program
Run 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.
Last Updated :
18 Jul, 2020
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...