Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用用户输入的关键字在Node.js中执行Twitter API搜索_Javascript_Angularjs_Node.js_Express_Twitter - Fatal编程技术网

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

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

我是Node.js、Express和Angular的新手。我的
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的函数中,您将获取调用的结果并更新模型。

如果您有,请共享上面的工作示例代码。谢谢!