Bases de datos relacionales y documentales en NodeJS
Pablo Sanabria
Juan Diego Diaz



CONTENIDO
Node JS + driver

Node JS + ORM

Node JS + ODM


Driver MySql
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'node_everywhere',
password : '',
database : 'web'
});
connection.connect(function(err){
if(!err) {
console.log("Database is connected ...");
} else {
console.log("Error connecting database ...");
}
});
connection.query('SELECT * from node_frameworks LIMIT 2',
function(err, rows, fields) {
connection.end();
if (!err)
console.log('OK: ' + rows);
else
console.log('Error while performing Query.');
});siege
"stress tester"
Pool connections
sudo siege -c100 -t30S http://localhost:3000var pool = mysql.createPool({
connectionLimit : 100, //important
host : 'node_everywhere',
user : 'root',
password : '',
database : 'web',
debug : false
});
https://npmcompare.com
SEQUELIZE

Transactions
Hooks
Bulking
Migration
Raw queries
Querying
Relations/Associations
(eager loading)
npm install express-generator
node_modules/.bin/express . -f --ejs
npm install sequelize sequelize-cli mysql
node_modules/.bin/sequelize initMongo DB

- Base de datos NoSQL
- Orientado a documentos
- Open Source
- Los documentos tienen una estructura basada en JSON
Formas de conexión con NodeJS
- MongoDB official driver
- Mongoose
Mongo's Official Driver
- Mantenido por los mismos desarrolladores de MongoDB
- Link al repositorio: https://github.com/mongodb/node-mongodb-native
Instalación:
npm install mongodb --save
var MongoClient = require('mongodb').MongoClient,
assert = require('assert');
var url = 'mongodb://localhost:27017/testUC'
function showAllDocuments(db, callback) {
var collection = db.collection('documents');
collection.find({}).toArray(function (error, docs) {
console.log("Found the following records");
console.log(docs);
callback(docs);
})
}
MongoClient.connect(url, function (error, db) {
assert.equal(null, error);
console.log("Connection Succesfull");
showAllDocuments(db, function() {
db.close();
});
});
Ejemplo
Mongoose
- ODM Oriented
- Depende del driver oficial de MongoDB
- Código abierto
- Te permite definir Esquemas para el modelo de datos
Instalación
npm install mongoose --savevar mongoose = require('mongoose');
var Schema = mongoose.Schema;
var kittySchema = new Schema( {
name: String,
color: String
});
var url = 'mongodb://localhost:27017/testUC'
mongoose.connect(url);
var db = mongoose.connection;
db.once('open', function () {
var Kitten = mongoose.model('Kitten', kittySchema);
var fluffy = new Kitten({ name: 'fluffy', color: 'Black' });
fluffy.save(function (err, fluffy) {
if (err)
console.log(err);
console.log("Save Succesfull");
Kitten.find(function (err, kittens) {
kittens.forEach(function (kitten) {
console.log("{" + kitten.name + ", " + kitten.color + "}");
})
db.close();
});
})
});Ejemplo
REFERENCIAS
- http://docs.sequelizejs.com/en/v3/
- https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
- https://github.com/mysqljs/mysql
- http://mongodb.github.io/node-mongodb-native/2.2/quick-start
- http://mongoosejs.com/docs/index.html
- https://expressjs.com/en/guide/database-integration.html#mongo
- https://github.com/Automattic/mongoose
- https://github.com/mongodb/node-mongodb-native
deck
By JUAN DIEGO DIAZ MOSQUERA
deck
- 407