Javascript 如何使用用户输入的关键字在Node.js中执行Twitter API搜索
我是Node.js、Express和Angular的新手。我的Javascript 如何使用用户输入的关键字在Node.js中执行Twitter API搜索,javascript,angularjs,node.js,express,twitter,Javascript,Angularjs,Node.js,Express,Twitter,我是Node.js、Express和Angular的新手。我的localhost上运行了一个Node/Express应用程序。我正试图使用twitterapi将其制作成一个Twitter搜索应用程序,这样我就可以输入一个搜索词,然后API返回这个搜索词的搜索结果。为此,我使用了。在index.js中,我在Xs上填写了我的Twitter密钥和机密,如下所示: var Twitter = require('twitter'); var client = new Twitter({ consum
localhost
上运行了一个Node/Express应用程序。我正试图使用twitterapi将其制作成一个Twitter搜索应用程序,这样我就可以输入一个搜索词,然后API返回这个搜索词的搜索结果。为此,我使用了。在index.js
中,我在Xs上填写了我的Twitter密钥和机密,如下所示:
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: 'X',
consumer_secret: 'X',
access_token_key: 'X',
access_token_secret: 'X'
});
app.controller('myCtrl', ['$scope',
function($scope){
$scope.search = function(searchTerm){
console.log("Searching for " + searchTerm);
// Search here...
console.log("Search finished.");
};
}
]);
然后,当我将以下代码放入index.js
时,关键字“awesome”的搜索结果将记录到控制台:
var tmpSearch = 'awesome';
client.get('search/tweets', {q: tmpSearch}, function(error, tweets, response){
if (error) throw error;
console.log(tweets);
});
这很有效。我的主页使用一个控制器myCtrl
,它确保当用户按下搜索按钮(使用属性ng click=“Search(searchTerm)”
)时,输入的搜索项被分配给变量searchTerm(使用输入区域的ng model=“searchTerm”
)。控制器的代码如下所示:
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: 'X',
consumer_secret: 'X',
access_token_key: 'X',
access_token_secret: 'X'
});
app.controller('myCtrl', ['$scope',
function($scope){
$scope.search = function(searchTerm){
console.log("Searching for " + searchTerm);
// Search here...
console.log("Search finished.");
};
}
]);
它将搜索项记录到控制台,但我不知道如何从这里开始。上面写着//在这里搜索…
我想执行客户机。从上面获取代码,但是我不能在我的public/javascript.js
中使用客户机变量。为了执行搜索,我需要向代码中添加什么
我觉得我不了解Node/Express的一个非常重要的部分,但我不知道这是哪一部分,因此我对解决方案的搜索并不十分成功。我以前也从未使用过API,我花了很多时间阅读Node.js和Twitter API的文档和教程,但我只是在一周前才开始学习,所以大部分内容对我来说都没有多大意义。我在GitHub上找到了几个使用Twitter API的节点应用程序示例(大多数使用不同的软件包),我试图理解其中的代码,但我不知道该怎么做。我希望有人能耐心地向我解释我遗漏了什么。你需要思考每一步都发生在哪里。您正在显示的Twitter代码正在您的服务器上的节点中运行。myCtrl代码是AngularJS代码,在浏览器中运行。正如你所感觉到的,他们之间缺少某种联系
控制流程如下所示:
- 用户键入术语并单击搜索按钮
- 控制器向Node.js发送HTTP请求
- 您的Node.js服务器调用Twitter
- Node.js将结果交还给客户端(myCtrl)
- 结果将显示给用户
你已经准备好了这些东西。缺少的是HTTP请求和响应。以下是您要做的:
- 添加一个端点,例如,
/api/twittersearch
。您将使用Node.js和Express执行此操作
- 该端点的实现将是一个带有参数
req
和res
的函数(请求和响应;这些名称不是必需的,但经常使用);此函数将执行新建Twitter
和客户端。获取上面的代码
client.get
调用有一个回调函数,您当前已经实现了该函数;在回调中,您将把tweets发送回客户端(类似于res.send(tweets)
- 在控制器中,您的“Searchhere”代码类似于
$http.get('/api/twittersearch?term='+searchTerm)
对的最后一个调用返回a。您将使用.then(函数(tweets){…}).catch(函数(errors){…})
。在传递给then的函数中,您将获取调用的结果并更新模型。如果您有,请共享上面的工作示例代码。谢谢!