所以我最近跳到基于节点的网络应用程序(我已经玩了很多但现在我实际上在创造一些东西)
所以我使用Express,MongoDB和Node(在Heroku上发布)设置了一个简单的REST API 现在我正在尝试在Express和Node中创建一个客户端/ Web应用程序,它与API通信并解析响应并实际查看对象。
我想要做的是在一个简单的页面上列出API的当前条目。 所以我创建了一条通往' / home'在我的应用程序中工作正常。 它使用了一个工作正常的把手模板。
我使用了一个&home; .js'文件来渲染视图:
var request = require('request');
exports.index = function (req, res) {
res.render('home', {
title: 'home',
items: getItems
});
};
var getItems = function(req, res, next) {
request(process.env.API_URL, function(err, resp, body) {
if (!err && resp.statusCode == 200) {
return body;
}
}
};
我在这里尝试了不同的事情,但无论何时我做了类似的事情:
request
它返回exporst.index
对象/函数而不是正文(我可以在把手中解析:P)
我在这个调用上做了很多变化(在request(options, callback)
函数中调用它,在它之外,创建一个options变量和一个单独的回调,如request
)但是它们都是错误或返回{ {1}}对象/功能。
当我console.log(body);
代替return body;
时,它会正确记录。
我猜我现在在圈子里跑。
非常感谢任何帮助:)
答案 0 :(得分:0)
您在调用getItems
时引用函数res.render
而不是执行函数,获取输出并将其分配给items
。
res.render('home', {
title: 'home',
items: getItems // this is just a reference to "getItems" function.
});
您需要执行函数getItems
以获取实际数据并在视图中呈现它。
对于流控制:您可以将getItems
包含在一个promise中,并使用co-express
来yield
路由处理程序中的promise。