Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Javascript: Primeiros Passos

Javascript: Primeiros Passos

Meus primeiros passos em Javascript no backend.

Dmitry Rocha

July 18, 2015
Tweet

More Decks by Dmitry Rocha

Other Decks in Technology

Transcript

  1. Meu projeto, minhas regras 1. Liberdade de escolha da tecnologia;

    2. Esta parte do projeto: banco de dados somente leitura; 3. Servidor e banco de dados legado; 3 / 25
  2. Eu fui… …marotamente tentando acessar o banco de dados via

    js… …”vou renderizar uma notíciazinha aqui”… 6 / 25
  3. Eu fui… …marotamente tentando acessar o banco de dados via

    js… …”vou renderizar uma notíciazinha aqui”… …PUTZ: FIZ A PORRA TODA EM JS. 7 / 25
  4. Javascript Básico + Testes $ npm init $ npm install

    mocha --save-dev $ npm install expect.js --save-dev 11 / 25
  5. Live coding? Not today 1 var DataTypes = require('sequelize'); 2

    var sequelize = new DataTypes('database', 'username', 3 'password', { 4 logging: false, port: 'port', host: 'host' 5 }); 6 var db = {}; 7 8 db.DataTypes = DataTypes; 9 db.sequelize = sequelize; 10 11 var news = sequelize['import'](__dirname + '/news'); 12 var section = sequelize['import'](__dirname + '/section'); 13 db.news = news; 14 db.section = section; 15 db.news.belongsTo(db.section, { foreignKey: 'secao_id' }); 16 17 module.exports = db; 15 / 25
  6. Banco de Dados: ”model” 1 module.exports = function(sequelize, DataTypes) {

    2 return sequelize.define('news', { 3 title: DataTypes.STRING, 4 content: DataTypes.TEXT, 5 status: DataTypes.INTEGER, 6 date: DataTypes.DATE, 7 'secao_id': DataTypes.STRING 8 }, { 9 tableName: 'noticias', 10 underscored: true, 11 timestamps: false, 12 scopes: { 13 'feed': { 14 where: { status: 1 }, 15 order: [ ['id', 'desc'] ], 16 limit: 20 17 }, 18 } 19 }); 20 }; 16 / 25
  7. Banco de Dados: teste 1 process.env.NODE_ENV = 'test'; 2 var

    expect = require('expect.js'); 3 describe('News', function(){ 4 before(function() { 5 this.db = require('../../models'); 6 7 this.news = { 8 title: 'Letters from Germany', slug: 'letters-from-germany', data: new Date() 9 }; 10 }); 11 12 beforeEach(function() { return this.db.news.destroy({ truncate: true }); }); 13 14 describe('create', function() { 15 it('should be persisted', function(done) { 16 return this.db.news.create(this.news).then(function(news) { 17 expect(news.isNewRecord).to.equal(false); 18 19 return done(); 20 }); 21 }); 22 23 it('has title', function(done) { 24 return this.db.news.create(this.news).then(function(news) { 25 expect(news.titulo).to.equal('Letters from Germany'); 26 27 return done(); 28 }); 29 }); 30 // … 31 }); 32 }); 17 / 25
  8. Servidor Web: exemplo básico 1 var express = require('express'); 2

    var app = express(); 3 4 app.get('/', function (req, res) { 5 res.send('Hello World!'); 6 }); 7 8 var server = app.listen(3000, function () { 9 var host = server.address().address; 10 var port = server.address().port; 11 12 console.log('Example app listening at http://%s:%s', host, port); 13 }); 20 / 25
  9. Servidor Web: Gerador $ npm install express-generator -g $ express

    myapp --ejs Live showing, exemplo do gerador. 23 / 25
  10. Mais informações no meu blog. Fiz duas postagens sobre uso

    do sequelize com jasmine 1 e sequelize com mocha 2. 1Jasmine e Sequelize: Uma introdução - http://dmitryrck.github.io/jasmine-sequelize/ 2Mocha, expect.js e Sequelize: Uma introdução - http://dmitryrck.github.io/mocha-sequelize/ 24 / 25