【问题标题】:How to perform Twitter API search in Node.js with user-entered keyword如何使用用户输入的关键字在 Node.js 中执行 Twitter API 搜索
【发布时间】:2016-03-24 10:57:54
【问题描述】:

我是 Node.js、Express 和 Angular 的新手。我在localhost 上运行了一个 Node/Express 应用程序。我正在尝试使用 Twitter API 将其变成 Twitter 搜索应用程序,以便我可以输入搜索词,API 返回此搜索词的搜索结果。为此,我使用twitter package。在index.js,我在 X 处填写了我的 Twitter 密钥和秘密如下:

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);
    });

这行得通。我的主页使用了一个控制器myCtrl,它确保当用户按下搜索按钮(带有属性ng-click="search(searchTerm)")时,输入的搜索词被分配给变量searchTerm(使用ng-model="searchTerm"作为输入区域)。控制器代码如下:

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 代码,但我不能在public/javascript.js 中使用routes/index.js 中的client 变量。为了执行搜索,我需要在代码中添加什么?

我有一种感觉,我不了解 Node/Express 的一个非常重要的部分,但我不知道那是哪一部分,所以我寻找解决方案并不是很成功。我以前也从未使用过 API,而且我花了很多时间阅读 Node.js 和 Twitter API 的文档和教程,但我才开始学习它只是一周前,所以大部分内容都没有对我来说很有意义。我在 GitHub 上找到了一些使用 Twitter API 的 Node 应用程序示例(其中大多数使用不同的包),我试图理解其中的代码,但我不知道我应该做什么。我希望有人能有足够的耐心向我解释我缺少什么。

【问题讨论】:

  • 如果你有的话,请你分享上面的工作示例代码。谢谢!

标签: javascript angularjs node.js express twitter


【解决方案1】:

您需要考虑每个步骤发生在哪里。您显示的 Twitter 代码在您的服务器上的 Node 中运行。 myCtrl 代码是 AngularJS 代码,在浏览器中运行。正如你所感觉到的,它们之间缺少连接。

控制流程是这样的:

  • 用户输入一个词并点击搜索按钮
  • 您的控制器向您的 Node.js 发送 HTTP 请求
  • 您的 Node.js 服务器调用 Twitter
  • Node.js 将结果返回给客户端 (myCtrl)
  • 结果会显示给您的用户

你已经准备好了。缺少的是 HTTP 请求和响应。这是你要做的:

  • 添加一个端点,比如/api/twittersearch。您将使用 Node.js 和 Express 完成此操作
  • 该端点的实现将是一个带有参数reqres 的函数(请求和响应;这些名称不是必需的,但经常使用);此函数将执行您上面的 new Twitterclient.get 代码
  • client.get调用有一个回调函数,你目前已经实现了;在您的回调中,您会将推文发送回客户端(类似于res.send(tweets)
  • 在您的控制器中,您的“在此处搜索”代码将类似于 $http.get('/api/twittersearch?term=' + searchTerm)

$http.get() 的最后一次调用返回一个Promise。您将使用.then(function(tweets){ ... }).catch(function(errors){ ... }) 跟进。在您传递给 then 的函数中,您将从调用中获取结果并更新您的模型。

【讨论】:

    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多