Edit: what the middleware does takes the url part of the id and uses it to search the database for a special record but tells me that the id in the find_image.js is undefined so I guess it does not is passing the parameters to the middleware.
this is my code: router_app.js
var express = require('express');
var Imagen = require('./models/imagen');
var router = express.Router();
var image_finder_middleware = require("./middlewares/find_image");
router.get("/", function(req, res){
res.render("app/home");
});
/* Rest */
router.get("/imagenes/new", function(req, res){
res.render("app/imagenes/new");
});
router.all("/imagenes/:id*", image_finder_middleware);
router.get("/imagenes/:id/edit", function(req, res){
res.render("app/imagenes/edit");
});
router.route("/imagenes/:id")
.get(function(req,res){
res.render("app/imagenes/show");
})
.put(function(req,res){
res.locals.imagen.title = req.body.title;
res.locals.imagen.save(function(err) {
if (!err) {
res.render("app/imagenes/show");
} else{
res.render("app/imagenes/"+req.params.id+"/edit");
}
})
})
.delete(function(req,res){
Imagen.findOneAndRemove({_id: req.params.id},function(err){
if (!err) {
res.redirect('/app/imagenes');
} else{
console.log(err);
res.redirect('/app/imagenes'+req.params.id);
}
})
})
router.route("/imagenes")
.get(function(req,res){
Imagen.find({},function(err,imagenes) {
res.render("app/imagenes/index", {imagenes:imagenes});
})
})
.post(function(req,res){
var data = {
title: req.body.title
}
var imagen = new Imagen(data);
imagen.save(function(err) {
if (!err) {
res.redirect("/app/imagenes/"+imagen._id);
}else{
res.render(err);
}
})
})
module.exports = router;
this is my find_image.js
var Imagen = require("../models/imagen");
module.exports = function(res, req, next) {
Imagen.findById(req.params.id, function(err, imagen){
if (imagen != null) {
console.log("encontre la imagen"+imagen.title);
res.locals.imagen = imagen;
next();
} else{
res.redirect("/app");
};
})
}