Projeto: https://github.com/wouerner/nodejs-express
Vamos clonar o projeto:
git clone --depth 1 --branch v1.0.5 git@github.com:wouerner/nodejs-express.git
Vamos para dentro da pasta do projeto:
cd nodejs-express
Vamos editar o app.js e adicionar a conexão com banco de dados:
nvim app.js
const express = require('express');
const mongoose = require('mongoose');
mongoose.connect('mongodb://db:27017/book', { useNewUrlParser: true });
var bookRouter = require('./routes/index');
const app = express();
app.use('/', bookRouter);
module.exports = app;
Vamos editar apenas o metodo index, buscando da base de dados, deve retornar vazio.
Vamos editar o controllers/bookController.js:
nvim controllers/bookController.js
const BookModel = require('../models/Book');
exports.index = async (req, res)=> {
let books = await BookModel.find({});
res.json(books);
};
exports.show = function(req, res) {
const books = {"name" : "book"};
res.json(books);
};
exports.store = function(req, res) {
const books = {"message": "Criado!", "data":{"name" : "book"}};
res.json(books);
};
exports.update = function(req, res) {
const books = {"message": "Atualizado!", "data":{"name" : "book"}};
res.json(books);
};
exports.del = function(req, res) {
const books = {"message": "Excluido!", "data":{"name" : "book"}};
res.json(books);
};
Vamos adicionar nossa model do Books.
Vamos criar o Book.js
mkdir models
nvim models/Book.js
const mongoose = require('mongoose');
const { Schema } = mongoose;
const bookSchema = new Schema({
name: {
type: String,
required: true
},
});
module.exports = mongoose.model('books', bookSchema);
Precisamos adicionar no docker-compose o banco de dados.
Vamos editar o docker-compose.yml:
nvim docker-compose.yml
version: '3'
services:
nodejs-express:
build:
context: .
dockerfile: Dockerfile
container_name: nodejs-express
volumes:
- ./:/app
- /app/node_modules
ports:
- "3000:3000"
db:
image: 'mongo'
container_name: mongodb
ports:
- '27017:27017'
volumes:
- /data/db
Vamos adicionar a dependencia do mongoose.
Vamos editar o package.json:
nvim package.json
const express = require('express');
{
"name": "nodejs",
"version": "0.0.1",
"description": "Node.js on Docker + docker-compose + nodemon",
"author": "Wouerner <[email protected]>",
"main": "server.js",
"scripts": {
"start": "node server.js",
"start-dev": "./node_modules/nodemon/bin/nodemon.js .",
"test": "./node_modules/jest/bin/jest.js ."
},
"dependencies": {
"express": "^4.16.1",
"mongoose": "^6.1.1"
},
"devDependencies": {
"jest": "^27.3.1",
"nodemon": "^1.19.4",
"supertest": "^6.1.6"
}
}
Vamos iniciar os containers:
docker-compose up --build
video
docker-compose up --build
Projeto finalizado para consulta!
Pode fazer o clone e analisar!
git clone --depth 1 --branch v1.0.6 git@github.com:wouerner/nodejs-express.git