Databases and NodeJS

Post on 22-Jan-2018

221 views 1 download

transcript

DATABASESNODEJS

BEFORE WE BEGIN

Logistics

Slides: slideshare.net/rizafahmi

Subscribe: youtube, facebook live

Feedback:* https://www.youtube.com/c/hacktiv8

* https://www.facebook.com/hacktiv8id

AGENDA

✅ What is database

✅ Types of database

✅ Common data types

✅ Database operations

✅ Object Relational Mapping

✅ Build something with database

WAYS TO STORE AND RETRIEVE DATA

Store data in global variable[{ "id": 1, "image": "/img/1-jlol_sp_ed_bb-8_sphero_force_band.jpg", "description": "The Force is strong with you. Channel it with the Special Edition Battle-Worn BB-8 and included Star Wars Force Band by Sphero. Like a Jedi Knight, you can control your BB-8 App-Enabled Droid with just a wave of your hand and expand your abilities with Force Training." }, { "id": 2, "image": "/img/ilhi_3d_sw_kylo_ren.gif", "description": "The Dark Side is a very turbulent place. Sure they have cookies, but there are nooks and crannies in which darkness reigns so supreme, if you merely enter, you're likely to stub your toe." }]

WAYS TO STORE AND RETRIEVE DATA

Store data in global variable

PROS CONS

SUPER FAST

EASY

RESIDES IN MEMORY

LOSE DATA WHEN RESTART

WAYS TO STORE AND RETRIEVE DATA

Store data in a file

const fs = require('fs')

app.post('/users', function (req, res) { const user = req.body fs.appendFile('users.txt', JSON.stringify({ name: user.name, age: user.age }), (err) => { res.send('successfully registered') }) })

WAYS TO STORE AND RETRIEVE DATA

Store data in a file

PROS CONS

RESIDES IN STORAGEINFLEXIBLE ONE USER AT A

TIME

CHEAPER

DISTRIBUTION PROBLEM

WHAT IS DATABASE

“A WAY TO STORE AND RETRIEVE DATA”

WHAT IS DATABASE

Database Types

RELATIONAL DATABASE NON RELATIONAL DATABASE

SQL NOSQL

WHAT IS DATABASE

Relational Database / SQL

Store in tables with rows and columns

We define a schema

WHAT IS DATABASE

Examples

WHAT IS DATABASE

Non Relational Database / NoSQL

No schema

Free Form Database

WHAT IS DATABASE

Key-value store

Graph databases

WHAT IS DATABASE

Column databases

Document databases

RELATIONAL DATABASE

DATA TYPES

Integer

Real

Text

Blob

2

71839

-38.2822

48

45e18

Hacktiv8

c

1

DATA TYPES

PostgreSQL Data Types

DATABASE OPERATIONSStructured Query Language

Data Definition Language

Data Manipulation Language

RELATIONAL DATABASE

Data Definition Language

/* Define a table schema */ CREATE TABLE items( id INTEGER PRIMARY KEY AUTOINCREMENT, image VARCHAR(100), description TEXT);

/* Change a table schema */ ALTER TABLE items ADD qty INTEGER; ALTER TABLE items RENAME TO barang;

/* Delete a table */ DROP TABLE users;

RELATIONAL DATABASE

Data Manipulation Language /* Insert a data */ INSERT INTO items (id, image, description) VALUES (1, "/img/1-jlol_sp_ed_bb- 8_sphero_force_band.jpg", "New item for today.");

/* Read data */ SELECT * FROM items;

/* Change data */ UPDATE items SET description=“Hacktivcash items”

/* Remove data */ DELETE FROM items WHERE id=1; CR

UD

DATABASE OPERATIONS

NODEJS

Data Definition Language

const sqlite3 = require('sqlite3').verbose() const db = new sqlite3.Database('./data/try.db')

const CREATE_TABLE = `CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(100), password TEXT);` const ALTER_TABLE = `ALTER TABLE users ADD dateCreated DATE;` const DROP_TABLE = `DROP TABLE users;`

db.serialize(() => { db.run(CREATE_TABLE) db.run(ALTER_TABLE) db.run(DROP_TABLE) })

db.close()

NODEJS

Data Manipulation Language

const sqlite3 = require('sqlite3').verbose() const db = new sqlite3.Database(‘./data/try.db')

const CREATE_TABLE = `CREATE TABLE IF NOT EXISTS items(id INTEGER PRIMARY KEY AUTOINCREMENT, image VARCHAR(100), description TEXT);` const DROP_TABLE = `DROP TABLE IF EXISTS items;` const INSERT_ITEM = `INSERT INTO items (id, image, description) VALUES (1, "/img/1- jlol_sp_ed_bb-8_sphero_force_band.jpg", "abc");` const SELECT_ITEM = `SELECT * FROM items;` const UPDATE_ITEM = `UPDATE items SET description='HACKTIVCAST new items'` const DELETE_ITEM = `DELETE FROM items WHERE id=1;`

NODEJS

Data Manipulation Languagedb.serialize(() => { db.run(DROP_TABLE) db.run(CREATE_TABLE) db.run(INSERT_ITEM)

db.each(SELECT_ITEM, (err, row) => { console.log(row.id, ': ', row.description) }) db.run(UPDATE_ITEM) db.each(SELECT_ITEM, (err, row) => { console.log(row.id, ': ', row.description) }) db.run(DELETE_ITEM) db.each(SELECT_ITEM, (err, row) => { console.log('After DELETE: ', row.id, ': ', row.description) }) })

db.close()

OBJECT-RELATIONAL MAPPING

“Technique that lets you query and manipulate data from a relational database using an object-oriented paradigm.”

Get Employee Addresses With SQL

SELECT name, city, street, state FROM Employee LEFT JOIN Address ON (Employee.address_id = Address.id)

Get Employee Addresses With ORM

employee.getDetailAddress()

ORM STANDARD FEATURES

MAPPING TABLES TO OBJECTS

CRUD Functionality

EXECUTING CUSTOM QUERIES

OTHER FEATURES

Seeding Data MigrationFlexibility

Data Validation Secure

LIBRARIES

ORM For NodeJS

SEQUELIZE

“SEQUELIZE IS A PROMISE-BASED ORM FOR NODE.JS V4 AND UP.”

“IT ENABLES JS DEVELOPERS TO WORK WITH RELATIONAL DATA MORE

EASILY.” -- ALEX BOOKER

SEQUELIZE

Benefits

Secure

Less Code Abstraction No SQL

Tools

SEQUELIZE

Limitations

Can be slow Extra Learning Curve

Documentation