我是 Node.js、Express 和 Angular 的新手。我有一个 Node/Express 应用程序在我的 localhost 上运行。我正在尝试使用 Twitter API 将其制作成 Twitter 搜索应用程序,以便我可以输入搜索词,API 返回该搜索词的搜索结果。为此,我使用 twitter package 。在 index.js
中,我在 X 处填写了我的 Twitter key 和 secret ,如下所示:
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: 'X',
consumer_secret: 'X',
access_token_key: 'X',
access_token_secret: 'X'
});
当我将以下代码放入 index.js
时,关键字“awesome”的搜索结果将记录到控制台:
var tmpSearch = 'awesome';
client.get('search/tweets', {q: tmpSearch}, function(error, tweets, response){
if (error) throw error;
console.log(tweets);
});
这有效。我的主页使用 Controller myCtrl
,它确保当用户按下“搜索”按钮(具有属性 ng-click="search(searchTerm)"
)时,输入的内容搜索词被分配给变量 searchTerm(使用 ng-model="searchTerm"
作为输入区域)。 Controller 的代码如下:
app.controller('myCtrl', ['$scope',
function($scope){
$scope.search = function(searchTerm){
console.log("Searching for " + searchTerm);
// Search here...
console.log("Search finished.");
};
}
]);
它将搜索词记录到控制台,但我不知道如何从这里继续。其中显示 //Search here...
我想执行上面的 client.get
代码,但我无法使用 client
变量来 self 的 public/javascript.js
中的 routes/index.js
。我需要在代码中添加什么才能执行搜索?
我感觉我不理解 Node/Express 的一个非常重要的部分,但我不知道那是哪一部分,所以我对解决方案的搜索并不是很成功。我之前也从未使用过 API,而且我花了很多时间浏览 Node.js 和 Twitter API 的文档和教程,但我只是在一周前才开始学习它,所以其中大部分内容并没有成为一个对我来说还有很多意义。我在 GitHub 上找到了一些使用 Twitter API 的 Node 应用程序示例(其中大多数使用不同的包),我试图理解其中的代码,但我不知道我应该做什么。我希望有人有足够的耐心向我解释我所缺少的内容。
最佳答案
您需要考虑每一步发生的位置。您显示的 Twitter 代码正在您服务器上的 Node 中运行。 myCtrl 代码是 AngularJS 代码,在浏览器中运行。正如你所感觉到的,缺少一些东西来连接它们。
控制流程如下:
- 用户输入一个术语并点击“搜索”按钮
- 您的 Controller 向您的 Node.js 发送 HTTP 请求
- 您的 Node.js 服务器调用 Twitter
- Node.js 将结果返回给客户端 (myCtrl)
- 结果将显示给您的用户
你已经把这些部分都准备好了。缺少的是 HTTP 请求和响应。这是你要做的:
- 添加端点,例如
/api/twittersearch
。您将使用 Node.js 和 Express 来完成此任务 - 该端点的实现将是一个带有参数
req
和res
的函数(请求和响应;这些名称不是必需的,但经常使用);此函数将执行上面的new Twitter
和client.get
代码 client.get
调用有一个回调函数,您当前已实现该函数;在回调中,您将把推文发送回客户端(类似于res.send(tweets)
- 在您的 Controller 中,您的“在此处搜索”代码将类似于
$http.get('/api/twittersearch?term=' + searchTerm)
最后一次调用$http.get()返回 Promise 。您将使用 .then(function(tweets){ ... }).catch(function(errors){ ... })
进行跟进。在您传递给 then 的函数中,您将从调用中获取结果并更新您的模型。
关于javascript - 如何使用用户输入的关键字在 Node.js 中执行 Twitter API 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34343660/