【发布时间】:2015-01-19 08:46:02
【问题描述】:
处理一个简单(相对)的 RxJS 演示/测试代码,该代码发出一个 Twitter Api 调用和一个 MongoDB 请求,并将它们压缩到一个单独的 observable 中。
为了能够进行 Twitter Api 调用,您需要通过 Oauth 进行身份验证。我找到了 node-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 方法创建一个新的 Observable 以从 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 请求创建新的 Observable 时出错。此外;我已经在没有 RxJS 和 MongoDB 查询的情况下单独测试了 Twitter 调用中的代码,并且这些代码可以正常工作。将fromNodeCallback 更改为fromCallback 也没有任何区别。
【问题讨论】: