【问题标题】:How do I define a search term box to search for a user's specific timeline using a Twitter stream API and meteor.js如何定义搜索词框以使用 Twitter 流 API 和meteor.js 搜索用户的特定时间线
【发布时间】:2015-04-18 14:31:36
【问题描述】:

您好,我目前有一个名为 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(新的推特搜索数组结果)的结果存储到 mongoDB 集合中。

任何帮助或指导将不胜感激。

【问题讨论】:

    标签: javascript mongodb twitter meteor real-time


    【解决方案1】:

    我认为您需要的是meteor methods。

    所以你可以详细说明一下

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

    并在event handler 中使用此方法

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

    【讨论】:

    • 这似乎是处理我的问题的理想方式!你还知道点击输入框后将结果存入mongoDB数据库的礼仪吗?
    猜你喜欢
    • 2013-03-30
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    相关资源
    最近更新 更多