¿Por qué esto
router.get('/eventTest/:id', function (req, res) { var event = Event.getEventById(req.params.id, function (err, rows) { if(err) { return err; } else { return rows; } }); res.json(event);});
devuelve { "domain": null, "_events": {}, "_eventsCount": 0, "_callSite": {}, "_ended": false, "_idleNext": null, "_idlePrev": null, "_idleStart": null, "_idleTimeout": -1, "_repeat": null, "sql": "select * from event where id=?", "values": [ "1" ], "typeCast": true, "nestTables": false, "_resultSet": null, "_results": [], "_fields": [], "_index": 0, "_loadError": null }
esto y ejemplo de uno de los métodos que estoy llamando
`getEventById:función(id,devolución de llamada){
return db.query("select * from event where id=?",[id],callback); }`
en lugar de los valores reales como lo hace cuando uso res.json (filas) dentro de la devolución de llamada Event.getEventById?
Necesito esto para llamar a varios métodos y agregarlos a un objeto y luego enviar ese objeto en JSON
Gracias
Según su código, sí, necesita enviar una respuesta desde el método.
Dado que la naturaleza de Node.js es async , debe escribir su código de esa manera
Pruébalo en tu ruta
Event.getEventById(req.params.id, function (err, rows) { if(err) { res.status(500).send(err); } else { res.status(200).send(rows); } });ACTUALIZAR
Para ejecutar múltiples métodos y enviar todos los registros al mismo tiempo, luego siga
Probé "express-promise" así:
`router.get('/eventTest/:id', function (req, res) { res.json({ details: Event.getEventById(req.params.id), stages: Event.getEventStages(req.params.id) }); });`y todavía obtuve el mismo resultado (es decir, la consulta y no los valores). Supongo que mi problema es la forma en que administro las devoluciones de llamada de los métodos. ¿Es esto correcto?
router.get('/eventTest/:id', function (req, res, next) { Event.getEventById(req.params.id, function (err, rows) { if(err) return next(err); res.json(rows); }); });