处理一个简单(相对)的RxJS演示/测试代码,它使Twitter调用和一个MongoDB请求,并将它们压缩到一个可观察到的位置。
要能够拨打Twitter Api电话,您需要通过Oauth进行身份验证。我已经找到了节点-oauth库来处理节点请求:
var oauth = new OAuth.OAuth(
'https://api.twitter.com/oauth/request_token',
'https://api.twitter.com/oauth/access_token',
'key',
'secret',
'1.0A',
null,
'HMAC-SHA1'
);
然后,我用Oauth get
方法创建了一个新的可观察到的地方,以便从Twitter获得位置:
var twitterStream = Rx.Observable.fromNodeCallback(oauth.get)('https://api.twitter.com/1.1/trends/place.json?id=23424977',
'access-token',
'token');
来自MongoDB的另一个流:
Rx.Node.fromStream(Order.find().stream());
拉链的最后一步是:
var getNewList = Rx.Observable
.zip(flickrStream, orderStream, function(user, order) {
return {user: user, order: order};
});
getNewList.subscribe(function(response) {
// render `response`
console.log(response);
});
尽管当我通过Node执行代码时,代码对我来说似乎没有问题,但是下面的消息被打印到控制台上:
TypeError: Object #<Object> has no method '_performSecureRequest'
at exports.OAuth.get (/.../node_modules/oauth/lib/oauth.js:487:15)
at /.../node_modules/rx/dist/rx.all.js:5504:14
我有可能做了某事。在使用Twitter请求创建新的可观察性时出错。此外,我在没有RxJS和MongoDB查询的Twitter中单独测试了代码,这些代码没有任何问题。另外,将fromNodeCallback
更改为fromCallback
也没有任何区别。
发布于 2015-01-19 20:01:05
要么提供context
参数(参见文档),要么绑定get
的上下文
Rx.Observable.fromNodeCallback(oauth.get.bind(oauth))
或
Rx.Observable.fromNodeCallback(oauth.get, oauth)
https://stackoverflow.com/questions/28020754
复制相似问题