所以我试图访问twitter REST API并检索推文的屏幕名称。我觉得我的代码会更好解释:
我从isClient()调用方法'screenName':
'click button': function () {
Meteor.call('screenName',
function(error,result) {
if (error) {
console.log(error);
}
else {
window.alert(result);
}
}
)
}
由于某种原因,该方法在实际登录控制台上的twitter帐户的屏幕名称时返回undefined。
Meteor.methods({
'screenName': function() {
T.get('search/tweets',
{
q:'#UCLA',
count:1
},
function(err,data,response) {
console.log(data.statuses[0].user.screen_name);
return data.statuses[0].user.screen_name;
}
)
}
如果有人可以帮我解决这个问题。非常感谢你!
答案 0 :(得分:1)
您的服务器方法需要同步。方法中的回调在>>方法返回undefined
后返回。我想更具体,但我不确定您使用的是哪个库。
通过查看HTTP.call文档中的示例,您可以了解这一点。您的代码可能如下所示:
Tget = Meteor.wrapAsync(T.get);
Meteor.methods({
'screenName': function() {
try {
var result = Tget('search/tweets', {q:'#UCLA', count:1});
return result.statuses[0].user.screen_name;
} catch (e) {
return false;
}
}
});
有关wrapAsync
的详细信息,请参阅the docs。
答案 1 :(得分:0)
您只从内部函数返回data.statuses[0].user.screen_name
。您需要从screenName
方法返回,才能在Meteor.call()
中将其保留。