为什么会这样
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);
});
返回
{
"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
}
我和其中一种方法的例子
`getEventById:功能(ID,回调){
return db.query("select * from event where id=?",[id],callback);
}
`
而不是像在Event.getEventById回调中使用res.json(rows)时那样的实际值?
我需要这个来调用多个方法并将它们添加到一个对象然后在JSON中发送该对象
谢谢
答案 0 :(得分:1)
根据您的代码,是的,您需要从方法发送响应。
由于Node.js
性质为async
,因此您需要以这种方式编写代码
在您的路线中尝试
Event.getEventById(req.params.id, function (err, rows) {
if(err) {
res.status(500).send(err);
} else {
res.status(200).send(rows);
}
});
<强>更新强>
要执行多个方法并一次发送所有记录,请通过
答案 1 :(得分:0)
router.get('/eventTest/:id', function (req, res, next) {
Event.getEventById(req.params.id, function (err, rows) {
if(err)
return next(err);
res.json(rows);
});
});
答案 2 :(得分:0)
我试过&#34;表达承诺&#34;像这样:
`router.get('/eventTest/:id', function (req, res) {
res.json({
details: Event.getEventById(req.params.id),
stages: Event.getEventStages(req.params.id)
});
});`
并且仍然得到相同的结果(即查询而不是值)。我猜测我的问题是我从方法管理回调的方式。这是对的吗?