我刚刚开始学习MeteorJS,在完成本教程后,我决定尝试一下Twitter API。最初,我遵循了本教程
http://artsdigital.co/exploring-twitter-api-meteor-js/
完成后,我想要做的就是从tweet中抓取数据并将其显示在客户端。
不适用=正确的身份验证
下面是我写的代码:
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'
});
});
}我认为问题是,'click button‘函数,'T’是未定义的,所以编译器不知道它是什么,也不知道它来自哪里。这个想法确实在我的脑海中引发了一个想法,那就是将我写的东西移动到
if (Meteor.isServer) to if (Meteor.isClient)但无济于事。它没有起作用。我的推理是,一旦Meteor启动,服务器就会启动,所以如果服务器声明了变量T,我们不应该也能够在客户端访问它吗?
我不确定我的方法是否正确/不知道流星/流星NOOB..so的约定如果有人能帮助我,我将不胜感激!谢谢!
发布于 2015-08-22 08:36:27
将"var“声明放在"T”变量的前面。这会将作用域绑定到应用程序的服务器端上下文。我敢打赌,如果您去掉了var并将"T“设置为全局的,那么您也可以从客户端访问它。
https://stackoverflow.com/questions/31624398
复制相似问题