2015-01-19 3 views
1

Работа с простым (относительно) демо-/ тестовым кодом RxJS, который делает запрос Twitter Api и запрос MongoDB и застегивает их в один наблюдаемый.RxJS node-oauth simple get request failed

Для того, чтобы сделать звонок в Twitter, вам необходимо пройти аутентификацию через 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 методом, чтобы получить места из 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); 
}); 

Несмотря код кажется Ok для меня, когда я исполню ее с помощью узла ниже сообщение выводится на консоль:

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 

Вполне возможно, что я сделал СТГ. неправильно при создании нового Observable с запросом Twitter. Дополнительно; Я тестировал коды индивидуально, создавая твиттер-вызов без запросов RxJS и MongoDB, и они работают без проблем. Также изменение fromNodeCallback на fromCallback не имело никакого значения.

ответ

2

Либо поставить параметр context (см documentation) или связать контекст для get:

Rx.Observable.fromNodeCallback(oauth.get.bind(oauth)) 

или

Rx.Observable.fromNodeCallback(oauth.get, oauth)