Sono in fase di studio e mi ritrovo a dover modificare uno script obsoleto.
Ho seguito varie strade ma non riesco a trovare l'inghippo.
caso 1 - utilizzo modulo DISPATCH.JS
il dispatch funziona per tutti e 2 i POSTcodice:var common = require('./common.js'); var connect = common.connect; var dispatch = common.dispatch; var mongo = common.mongo; var server = connect.createServer( dispatch({ "/todo/stats/init": function(req,res,next){ common.sendjson(res,{ok:true}); common.readjson(req,function(body){initEntry(body)}); }, "/todo/stats/collect/:id": function(req,res,next,id){ var id = id; common.sendjson(res,{ok:true,id:id}); common.readjson(req,function(body){ saveEntry(id,body); }); }) ); mongo.init('todo','127.0.0.1'); mongo.open(); server.listen(3000,"127.0.0.1"); // nel file common.js exports.readjson = function(req,res,win) { var bodyarr = []; req.on('data',function(chunk){ bodyarr.push(chunk); }) req.on('end',function(){ var bodystr = bodyarr.join(''); util.debug('READJSON:'+req.url+':'+bodystr); if(bodystr.length > 0) { var body = JSON.parse(bodystr); win && win(body); } }) } exports.sendjson = function(res,obj){ var objstr = JSON.stringify(obj); res.writeHead(200,"OK",{ 'Content-Length':Buffer.byteLength(objstr), 'Content-Type':'text/json' }); util.debug('SENDJSON:'+objstr); res.end(objstr); }
curl -d '{"id":"a"}' http://127.0.0.1/todo/stats/init
curl http://127.0.0.1/todo/stats/collect/a -d '{"time":1294424743926,"total":5,"done":2}'
le funzioni initEntry(body) e saveEntry(body) vengono chiamate correttamente ma nessun parametro viene passato (req.params, req.body etc...) quindi nulla viene memorizzato su mongoDB.
caso 2 : utilizzando modulo HTTPDISPATCHER.JS
in questo secondo caso il primo POST viene eseguito perfettamente, vengono passati i parametri a initEntry(body) e il nuovo item viene aggiunto al database, ma il secondo POST non viene chiamato e ritorna un error 404.codice:dispatcher.onPost("/todo/stats/init", function(req,res){ common.sendjson(res,{ok:true}); common.readjson(req,function(body){ initEntry(body); }); }); dispatcher.onPost("/todo/stats/collect/:id", function(req,res){ var id = req.params.id; common.sendjson(res,{ok:true,id:id}); common.readjson(req,function(body){ saveEntry(id,body); }); }); var server = http.createServer(function(req,res){ dispatcher.dispatch(req,res); });
ho provato anche con EXPRESS ma stessi errori del caso 1.
Qualcuno può aiutarmi? Ho fatto troppa confusione?

Rispondi quotando

