首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使twit包与meteor.js一起工作

使twit包与meteor.js一起工作
EN

Stack Overflow用户
提问于 2015-08-10 18:10:27
回答 1查看 406关注 0票数 0

我试图在一些推特使用双npm软件包和流星。我已经安装了陨石:npm和http作为依赖项,但仍然没有运气。这是我的代码:

代码语言:javascript
运行
复制
/* server/lib/twitter-api.js */

Meteor.startup(function() {
  var Twit = Meteor.npmRequire('twit');

  Meteor.methods({
   'getStream': function() {
      var stream = T.stream('statuses/filter', { track: ['football']})
      stream.on('tweet', function (tweet) {
        console.log(tweet)
	   })
      }
  });
});



/* private/twitter.js */

var T = new Twit(config) {
	consumer_key: "xxxxxxxx",
	consumer_secret: "xxxxxxx",
	app_only_auth: true
}



/* client/views/twitter/twitter.js */
Template.tweets.helpers({
	'streams': function() {
		return Session.get("streams");
	}
});

Template.tweets.events({
  'streams': function () {
    Meteor.call("getStream", function(error, res) {
	  console.log(res);
	  Session.set("tweet", res)
     });
    }
});
代码语言:javascript
运行
复制
<template name="tweets">
  <h1>Tweets</h1>
	{{ streams }}
</template>

很少有问题:( 1)我的twit配置键是否以正确的路径/正确的格式存储?( 2)我的流星方法是否正确地存储?在我收到一个错误,说找不到它之前,现在我的控制台什么也没说,我需要做什么才能完成这个工作?现在,它正试图在推特上贴上“足球”的标签。有更简单的方法吗?我应该只使用http.get而不是双npm包吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-10 19:26:39

您可以尝试使用twitter包公开我发现的以下两个npm模块:https://atmospherejs.com/danimal/twit只是为了让生活更简单。

另外,您需要记住twit将是异步的,因为它是npm模块。您需要将对twitter的调用转换为同步调用

这就是方法的问题所在,它会在真正得到任何东西之前返回

var stream = T.stream('statuses/filter', { track: ['football']})

我们需要强制它等待流的结果,使用wrapasynchttps://github.com/meteorhacks/meteor-async

  1. 您可以安全地将其存储在server/文件夹或更好的settings上。
  2. 您不需要将Meteor.startup用于meteor.methods
  3. 如果您知道异步/同步只是使它成为同步函数,如果您不建议您阅读更多有关它的内容以真正理解它,这将需要一些时间,但基本的想法是,我们需要使它同步,因此服务器等待API结果,然后才返回带有API结果的meteor方法调用,否则当您从客户端调用meteor方法时,它不会立即返回未定义的内容,尝试添加一些console.log(),看看它是如何处理自己的。

怎么让它起作用?Helper很好,但是最好在客户端调用meteor方法,比如服务器端的+ sync函数:

代码语言:javascript
运行
复制
Template.tweets.onCreated(function() {
    Meteor.call("getStreams", function(error, res) {
      console.log(res);
      Session.set("streams", res)
    });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31926294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档