Fbgraph数据查询流星1.3

时间:2016-04-12 07:28:23

标签: javascript facebook meteor npm

当我使用Meteor 1.2时,我会在服务器上使用以下代码来查询用户数据和朋友数据:

function Facebook(accessToken) {
    this.fb = Meteor.npmRequire('fbgraph');
    this.accessToken = accessToken;
    this.fb.setAccessToken(this.accessToken);
    this.options = {
        timeout: 3000,
        pool: {maxSockets: Infinity},
        headers: {connection: "keep-alive"}
   }
   this.fb.setOptions(this.options);
}
Facebook.prototype.query = function(query, method) {
    var self = this;
    var method = (typeof method === 'undefined') ? 'get' : method;
    var data = Meteor.sync(function(done) {
        self.fb[method](query, function(err, res) {
            done(null, res);
       });
   });
   return data.result;
}

Facebook.prototype.getUserData = function() {
    return this.query('me');
}
Facebook.prototype.getFriendsData = function() {
    return this.query('/me/friends');
}

当我将我的项目更新为Meteor 1.3时,我使用“meteor npm install --save fbgraph”来安装fbgraph,但我发现'npmRequire'不再有效,所以我用'require'替换它如下:

function Facebook(accessToken) {
    this.fb = require('fbgraph');
    this.accessToken = accessToken;
    this.fb.setAccessToken(this.accessToken);
    this.options = {
        timeout: 3000,
        pool: {maxSockets: Infinity},
        headers: {connection: "keep-alive"}
    }
    this.fb.setOptions(this.options);
}

但是我仍然会收到此错误:调用方法'getFriendsData'时出现异常TypeError:Object [object Object]没有方法'sync'

所以我的问题是Meteor 1.3中Meteor 1.2的'Meteor.sync'是否有相同的功能?如果没有,那么如果不存在,我应该如何更改fb查询代码以使其与Meteor 1.3一起使用。

1 个答案:

答案 0 :(得分:0)

这似乎可以解决问题:

  1. 首先安装run-asnyc npm包

    $ npm install --save run-async
    
  2. 使用require初始化runAsync变量

    var runAsync = require('run-async');
    
  3. 用runAsync替换Meteor.sync

    var data = runAsync(function(done) {
        self.fb[method](query, function(err, res) {
            done(null, res);
        });
    });