【发布时间】:2018-06-27 07:54:27
【问题描述】:
我正在使用 twitter 的 API 通过查询特定的哈希标签来接收最近的推文。第一个 GET 请求是到search/tweets,它在它的参数中接受主题标签和其他查询。对此的响应返回一组推文(对象)。我将这些 id 中的每一个都推送到一个外部数组中。现在我想遍历这个数组并为每个 ID 再次调用statuses/show,以便我可以获得发布推文的用户的位置数据。 statuses/show 端点只需要一个推文 ID,但我有一个数组。我将如何对一组 ID 使用相同的 getRequest 函数?
我尝试通过在线阅读 Promises 来实现它,但它不起作用。
这是我的代码:
function getRequest(url, params) {
return new Promise(function (success, failure) {
twitterSearch.get(url, params, function (error, body, response) {
if (!error) {
success(body);
} else {
failure(error);
}
});
});
}
app.post('/twitter', (req, res) => {
console.log("body", req.body);
var tweetIDs = [];
var bounds = [];
getRequest('search/tweets', {q: req.body.tag, result_type:'recent', count:'100'})
.then((tweets) => {
tweets.statuses.map((status) => {
if(status.user.geo_enabled) {
console.log("ID: ", status.id);
tweetIDs.push(status.id);
}
});
return getRequest('statuses/show', tweetIDs); //I know tweetIDs is wrong, dont know what to do from here.
}).then((data) => {
console.log("User data for the ID")
console.log(data);
}).catch((error) => {
console.log(error)
});
res.send(bounds);
bounds.length = 0;
});
【问题讨论】:
标签: node.js api twitter ecmascript-6 es6-promise