当我使用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一起使用。
答案 0 :(得分:0)
这似乎可以解决问题:
首先安装run-asnyc npm包
$ npm install --save run-async
使用require初始化runAsync变量
var runAsync = require('run-async');
用runAsync替换Meteor.sync
var data = runAsync(function(done) {
self.fb[method](query, function(err, res) {
done(null, res);
});
});