我刚刚开始学习MeteorJS,在完成教程后,我决定使用Twitter API。最初,我遵循了本教程
http://artsdigital.co/exploring-twitter-api-meteor-js/
完成后,我想做的是从推文中抓取数据并在客户端显示。
N / A =正确认证
以下是我编写的代码:
if (Meteor.isClient) {
Session.setDefault('screen_name', 'John');
Template.hello.helpers({
screen_name: function () {
return Session.get('screen_name');
}
});
Template.hello.events({
'click button': function () {
T.get('search/tweets',
{
q: '#UCLA',
count: 1
},
function(err,data,response) {
var user_name = data.statuses[0].users.screen_name;
Session.set('screen_name', user_name);
}
)
}
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
var Twit = Meteor.npmRequire('twit');
var T = new Twit({
consumer_key: 'N/A', // API key
consumer_secret: 'N/A', // API secret
access_token: 'N/A',
access_token_secret: 'N/A'
});
});
}
我认为问题在于,点击按钮'功能,' T'被认为是未定义的,因此编译器不知道它是什么或它来自何处。这个想法确实激发了我想在
中移动我所写的内容的想法if (Meteor.isServer) to if (Meteor.isClient)
但无济于事。它没有用。我的理由是,一旦Meteor启动,服务器就会启动,所以如果服务器声明变量T,我们也不能在客户端访问它吗?
我不确定我的方法是否正确/不知道Meteor / Meteor NOOB的惯例。如果有人可以帮助我,那将非常感谢! 谢谢!
答案 0 :(得分:0)
你放了一个" var"在你的" T"面前宣言变量。这会将范围绑定到应用程序的服务器端上下文。我敢打赌,如果你摆脱了var并制造了" T"全局,那么你也可以从客户端访问它。