javascript - 如何使用用户输入的关键字在 Node.js 中执行 Twitter API 搜索

标签 javascript angularjs node.js express twitter

我是 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 来完成此任务
  • 该端点的实现将是一个带有参数 reqres 的函数(请求和响应;这些名称不是必需的,但经常使用);此函数将执行上面的 new Twitterclient.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/

相关文章:

javascript - html 元素的 ID 是否始终可从 window 对象获得?

javascript - 如果字段不为空,如何从引导模式更新输入字段?

angularjs - AngularJs 组件内无法访问 Groovy 代码

javascript - Access-Control-Allow-Headers 不允许请求 header 字段 Access-Control-Allow-Headers

javascript - JSHint 一些错误

node.js - 更新/刷新快速 session

node.js - 错误: Failed to load gRPC binary module

javascript - 如何使用 Snap SVG 在路径上制作动画?

javascript - 信用卡验证脚本说明

node.js - Node.js请求超时问题