HapiJS路由问题
我有一个routes.js这样的:HapiJS路由问题
server.route({
method: 'GET',
path: '/marvel/universal/verify/{serial?}',
handler: function(request, h) {
let obj = { "test": "a" };
Db.find('marvel', obj, 1, function(result) {
});
return h.response(result);
}
});
和使用官方的MongoDB包节点像这样的钩到MongoDB的一个数据库模块:
function find(collection, data, limit, callback) {
mongo.db.collection(collection).findOne(data, function(err, r) {
callback(r);
});
}
很显然,我可以”牛逼从匿名函数callback
返回结果我凭什么结果传递给h.reponse(result)
?
一些调试后,高致病性禽流感可以让你回到一个承诺,所以返回结果中承诺的作品!
server.route({
method: 'GET',
path: '/marvel/universal/verify/{serial?}',
handler: function(request, h) {
let obj = { "test": "a" };
return new Promise(function(resolve,reject){
Db.find('marvel', obj, 1, function(result) {
resolve(h.response(result));
});
});
}
});
当你返回h.response(undefined)时会发生什么?结果的价值是什么? –
什么是为此事h值,我更新了我什么,我建议代码。虽然我也建议你使用Node.js的调试器,看看该回调内部的变量,看他们是否正在定义或不 –
'request'和'h'做工精细,当他们是'Db.find外'...包装。一旦他们在这个匿名函数中,他们将失去访问权将数据返回到'handler'的词法上下文中。 –
你可以这样做,因为它是包裹的匿名函数处理程序中,仅当您的回调 –
中调用h.response'h.response'是不是在回调可用。 –
我认为h.response可用,你试过了吗? –