如何定义搜索词框来搜索用户'使用Twitter流API和meter.js的特定时间线

How do I define a search term box to search for a user's specific timeline using a Twitter stream API and meteor.js

本文关键字:搜索 API Twitter 使用 meter 定时间 js 时间线 定义 何定义 用户      更新时间:2023-12-13

嗨,我目前有一个名为twit的twitter流npm包,用于检索特定的用户时间线,并将这些推文和图片存储在数组中。

var x = [];
var y = [];
var z = [];
var imageUrl ;
var result;
var Stringify;

 if (Meteor.isServer) {
  var Twit = Meteor.npmRequire('twit');
  Future = Meteor.npmRequire('fibers/future');
Tweets = new Meteor.Collection("tweets");
    var twit = new Twit({
    consumer_key:         'xxxxxxxxxxxxxxxxxx'
  , consumer_secret:      'xxxxxxxxxxxxxxxxxx'
  , access_token:         'xxxxxxxxxxxxxxxxxx'
  , access_token_secret:  'xxxxxxxxxxxxxxxxxx'
    });

   twit.get('statuses/user_timeline', {screen_name: 'DopestClothes', count:20}, function(err, item) {
   console.log(err, item);
   for(var i=0 ; i < 19 ; i++)
     {    
        console.log(item[i].entities.media+"YES");
        console.log(item[i].entities.media+" media");
       if(item[i].entities.media) {
         imageUrl = item[i].entities.media[0].media_url;
         z.push(imageUrl);
         x.push(item[i].text+"'n");
         y.push(item[i].created_at+"'n");

       }
}


)}

这一切对我来说都很好,但我的问题是,我该如何在Meteor模板HTML中创建一个用户输入框,每当点击请求时,该框就会主动更改请求中使用的变量screen_name。

换句话说,允许用户指定应该检索哪个用户时间线,并且响应将刷新。从那时起,将var z(新的twitter搜索数组结果)的结果存储到mongoDB集合中。

如有任何帮助或指导,我们将不胜感激。

我认为这里需要的是一个流星方法。

所以你可以详细说明这个

<template name="example">
 <input type="text" id="testInput">
 <button type="submit" id="testButton">Click to change the screen_name</button>
</template>

server/server.js

使用这个

Meteor.methods({
    changeScreenName:function(newName){
     twit.get('statuses/user_timeline', {screen_name: newName, count:20}, function(err, item) {
   console.log(err, item);
    }
  })

在事件处理程序中使用此方法

Template.example.events({
   'click #testButton':function(event,template){
    var newName = $('#testInput').val(), //jquery
        newNames = document.getElementById('testInput').value; //Javascript
       Meteor.call('changeScreenNsme',newName,function(err,result){
        if(!err){
             Collection.insert({etiquette:newName}); //and insert on the collection
             console.log("The screen name was changed to " + newName)
        }
     })
  }
})