2016-10-26 14 views
1

私はflickrapi(https://www.npmjs.com/package/flickrapi)パッケージを使用したいと思います。私はそれをどのように行う必要があります`app.get`コールバックで非同期応答値を使用する方法

app.get('/', function (req, res) { 
    //do something with flickr 
}); 
Flickr.tokenOnly(flickrOptions, function(error, flickr) { 
    //I need this flickr variable 
}); 

と私は私の急行のコードでこの flickr変数を使用したい:私はそれを承認する必要がありますか?

+1

あなたは 'app.get' callback..justの内側に通常' Flickr.tokenOnly'を呼び出すことができます要求 – deadlock

答えて

1

モジュラーアプローチを、それを使用します。

別のあなたのFlickrの接続コードを置き:

flickr-public.js

var Flickr = require("flickrapi"), 
    flickrOptions = { 
     api_key: "API key that you get from Flickr", 
     secret: "API key secret that you get from Flickr" 
    }; 

module.exports = (function(){   
    Flickr.tokenOnly(flickrOptions, function(error, flickr) { 
     //handle error here 
     console.log('Flickr Object Obtained'); 
     return flickr; 
    }); 
})(); 

注:より良いあなたのapp.jsファイルにFlickrのオブジェクトをインスタンス化します。 サーバーが起動するとオブジェクトがすぐに作成されるようにします。 このflickrオブジェクトは公開API専用であり、何度も何度も認証する必要はありません。

あなたは、単にapp.jsファイルでそれを必要とすることによって、Flickrのオブジェクトをインスタンス化することができます今だけで単純にそれを要求することにより、任意の場所にFlickrのオブジェクトにアクセス

require('./flickr-public'); 

。 Node.jsのdocumentationから

routes.js

const flickr = require('../path-to/flickr-public'); 

app.get('/', function (req, res) { 
    //use flickr object to perform actions. 
}); 

説明

モジュールは、それらがロードされた最初の時間の後にキャッシュされます。これは、とりわけ、require('foo')へのすべての呼び出しで、同じファイルに解決される場合は、返されるオブジェクトがまったく同じになることを意味します。 require('foo')を複数回呼び出しても、モジュールコードが複数回実行されることはありません。

+0

感謝を終了するには、 '' res.send() 'や' res.endを()CALするようにしてくださいこれは私が探していたものです – lasoweq

0

ちょうどあなたのGETの中に置く

app.get('/', function (req, res) { 
    Flickr.tokenOnly(flickrOptions, function(error, flickr) { 
    //do something res.status(200).send('what you want here'); 
    }); 
}); 
0

は、あなたのルートコールバック内に直接

app.get('/', function (req, res) { 
    Flickr.tokenOnly(flickrOptions, function(error, flickr) { 
     //call someother method to get photos etc. and finally call res.send() 
     res.send(photos); // where photos is obtained from flickr or anything you can pass which should be response of you request. 
    }); 
}); 
関連する問題