sábado, 14 de abril de 2018

Express y Mongodb | Páginación de Productos | FAST

Apuntes:  github.com


REPARAR MONGO 
 mongod --dbpath /data/db --repair




CONFIGURACION DEL PUERTO   

// Setting (configuraciones)
// selecciona el puerto que traiga el servidor o por defecto seleciona 3000 
app.set('port', process.env.PORT || 3000

// Archivos staticos
app.listen(app.get('port'), ()=> {
console.log ("Ejecutandose en el puerto ", app.get('port'))
})



MOTOR DE PLANTILLA



const path = require('path')

// Setting (configuraciones) 
app.set('views', path.join(__dirname, 'views'))  //'views´es nuestra CARPETA de VISTAS
app.set('view engine', 'ejs')

MONGOSE


const mongoose = require('mongoose')
// express-pagination es el nombre de mi Base de Datos  
mongoose.Promise = global.Promise    (Para usar las promesas

mongoose.connect('mongodb://localhost/express-pagination')
         .then(()=> console.log('La BASE DE DATOS esta conectada'))
.catch(err => console.log(err)) 

//mongoose.connect('mongodb://localhost/express-pagination', { useMongoClient: true) VERSION ANTERIOR

BODYPARSER
(Para entender la informacion en formato JSON y la informacion de los formularios)
const bodyParser = require('body-parser')
// midddleware
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: false}))
____________________

Se crea un archivo INDEX.JS  en la carpeta ROUTES 

const router = require('express').Router()
 // Rutas
//router.get('/', (req,res)=> res.send('Hola Mundo'))   Muestra un mensaje
module.exports = router

--------------------
                                                                          RUTAS (routes)

const indexRoutes = require('./routes/index')
// Rutas del servidor
app.use(indexRoutes)


Video 2 de 4 
--------------------
Se crea un archivo PRODUCT.JS en la carpeta MODELS

const mongoose = require('mongoose')
const Schema  = mongoose.Schema()
const ProductSchema = new Schema({
category: String,
name    : String,
price   : Number,
cover   : String
})
module.exports = mongoose.model('Product', ProductSchema)
--------------------

comandos de mongo
+ Inf. de MOngo


show databases   (Mostrar las Bases de datos)
use express-pagination  (nombre de mi b.d.)
show collections  (muestra las colecciones)
db.product.count()  cuenta los registros de la colleccion product
db.products.find().pretty()  muestra los productos

db.products.find({category:"Hortalizas"}).pretty()

--------------------





*routes/Index.js 
router.post('/add-product', (req, res, next) => {
console.log(req.body)
//res.send('Ruta POST recibida')
const product = new Product()
product.category = req.body.category_name
product.name     = req.body.product_name
product.price = req.body.product_price
product.cover = faker.image.image()
product.save(err => {
if (err)  { throw err }
res.redirect('/add-product') }) });
                                  GENERAR PRODUCTOS ALEATORIOS

router.get('/generar-datos-faker', (req, res, next) => {
//res.send('Aqui se genera datos con FAKER')
for(let i=0; i < 90; i++){
const product = new Product()
product.category = faker.commerce.department()
product.name     = faker.commerce.productName()
product.price = faker.commerce.price()
product.cover = faker.image.image()
product.save(err => {
if (err) { return next(err) }
})
//console.log(product)
}
res.redirect('/add-product')
});





MOSTRAR PRODUCTOS POR PAGINAS
router.get('/products/:page', (req, res, next) => {
  let perPage = 9;
  let page = req.params.page || 1;
  Product
    .find({}) // finding all documents
    .skip((perPage * page) - perPage) // in the first page the value of the skip is 0
    .limit(perPage) // output just 9 items
    .exec((err, products) => {
  Product.count((err, count) => { // count to calculate the number of pages
    if (err) return next(err);
    //console.log(products)     res.render('products/products', {
      products,
      current: page,
      pages: Math.ceil(count / perPage)
    });  // fin res.render
  }); // fin Product.count
    });  // fin exec
});

No hay comentarios.:

Publicar un comentario