Foros del Web » Programando para Internet » Node.js »

métodos put y delete express

Estas en el tema de métodos put y delete express en el foro de Node.js en Foros del Web. Hola buenos días a todos. Estoy haciendo un videoCurso de node.js en youtube (personalmente me parece muy bueno... es más, me parece tan bueno que ...
  #1 (permalink)  
Antiguo 17/06/2014, 11:43
 
Fecha de Ingreso: octubre-2013
Ubicación: Pego Alicante
Mensajes: 25
Antigüedad: 10 años, 6 meses
Puntos: 0
métodos put y delete express

Hola buenos días a todos.
Estoy haciendo un videoCurso de node.js en youtube (personalmente me parece muy bueno... es más, me parece tan bueno que voy a poner el enlace, si esto no se puede hacer, lo quitáis o me avisáis y yo mismo lo eliminaré... por otra parte, quizá muchos lo conozcáis y tampoco sea un gran descubrimiento... pero bueno, ahí va el enlace: https://www.youtube.com/playlist?list=PL38CA7BD8CB5F3FF9).

Estoy siguiendo bastante al pie de la letra el curso, aunque hay cosas que no he podido hacerlas tal cual... por ejemplo, el tutor instala el framework express, y yo además del framework express, también necesité instalar el framwork express-generator. Este cambio genera un pequeño efecto dominó, y a raíz de él, necesito realizar algunas modificaciones... por ejemplo:

1) El objeto http no está por defecto en app.js, y lo tengo que hacer yo... aprovecho y lo pongo fuera, en otro archivo (server.js)
2) Para hacer routing no lo hago en el archivo app.js y utilizando el objeto app=express(); como en el curso se muestra: app.get("/ruta",function(){}); sino que lo hago en el archivo routes/index.js y utilizo un objeto Router. O sea, que lo hago así:
var router = express.Router();
router.get("/ruta", function(){});

Todo va bien... cuando utilizo los método get y post funciona correctamten, pero el problema es que, en un momento del curso utilizan los métodos put y delete, y no hay manera de hacerlo funcionar... llevo TODO el día con ello.

En el curso lo hacen así:
  • Por un lado el html, renderizado utilizando jade:
Código jade:
Ver original
  1. h1 Vista Editar tarea
  2. form(method='post', action='/tareas/' + tarea.id)
  3.   input(name='_method', value='PUT', type='hidden')
  4.   fieldset
  5.     legend Editra tarea
  6.       div.clearfix
  7.         label Tarea
  8.         div.input
  9.           input(name='tarea[tarea]', class='xlarge', value="#{tarea.tarea}")
  10.       div.actions
  11.         input(type='submit', value='Guardar', class='btn primary')
  12.           button(type='reset', class='btn') Cancelar
  • Por otro lado el rutting para la ocasión:
Código Javascript:
Ver original
  1. var app= express();
  2.  
  3. app.put('/tareas/:id', function(req, res){
  4.   Tarea.findById(req.params.id, function (err, doc){
  5.     doc.tarea = req.body.tarea.tarea;
  6.     doc.save(function(err) {
  7.       if (!err){
  8.         res.redirect('/tareas');
  9.       }
  10.       else {
  11.         // error handling
  12.       }
  13.     });
  14.   });
  15. });

En mi caso, aunque el jade no sea exactamente igual... no lo voy a poner, porque es muy parecido y sé (con un 99% de certeza) que está bien. Así que pondré sólo el código del servidor:
Código Javascript:
Ver original
  1. var router = express.Router();
  2. router.put('/tareas/:id', function(req, res)
  3. {
  4.     Tarea.findById(req.params.id, function(err, doc)
  5.     {
  6.         doc.tarea = req.body.tarea.tarea;
  7.         doc.save(function(err)
  8.         {
  9.             if(!err) res.redirect('/tareas/');
  10.             else res.redirect('/tareas/nueva');
  11.         });
  12.     });
  13. });

Además... en el curso se utiliza, casi de igual manera, el método app.del("ruta", function(){}); pero si yo hago router.del("ruta", function(){}); no arranca el servidor y me dice que ese método no está definido...

¿Alguna idea? ¿Alguna solución? ¿Algún porqué de todo esto?

Gracias y un saludo.

Etiquetas: delete, express, metodo, route
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:35.