次のAPIラッパーを作成しました。エクスプレスビューで出力したいと思います。APIからデータを取得し、エクスプレスビューで出力します
私のAPIを呼び出すファイルがexchanges.jsであり、私はgetQuotes
に次の関数を使用します。
module.exports = function container(get, set, clear) {
function publicClient() {
if (!public_client) {
public_client = new KrakenClient()
}
return public_client
}
var exchange = {
name: 'kraken',
historyScan: 'forward',
makerFee: 0.16,
takerFee: 0.26,
// The limit for the public API is not documented, 1750 ms between getTrades in backfilling seems to do the trick to omit warning messages.
backfillRateLimit: 1750,
getQuote: function(opts, cb) {
var args = [].slice.call(arguments)
var client = publicClient()
var pair = joinProduct(opts.product_id)
client.api('Ticker', {
pair: pair
}, function(error, data) {
if (error) {
if (error.message.match(recoverableErrors)) {
return retry('getQuote', args, error)
}
console.error(('\ngetQuote error:').red)
console.error(error)
return cb(error)
}
if (data.error.length) {
return cb(data.error.join(','))
}
cb(null, {
bid: data.result[pair].b[0],
ask: data.result[pair].a[0],
})
})
},
}
return exchange
}
私は特急の経路を介しgetQuotes
を呼び出すしようとしています - ticker.js
:
var express = require('express');
var router = express.Router();
var kraken = require("../exchanges/kraken/exchange")
router.get('/', function(req, res, next) {
var tick = kraken.exchange.getQuote;
res.send('get ticker: ' + tick);
});
module.exports = router;
しかし、ルートを開くと、次のエラーメッセージが表示されます。
Cannot read property 'getQuote' of undefined
TypeError: Cannot read property 'getQuote' of undefined at /home/ubuntu/workspace/nodejs/routes/ticker.js:7:31 at Layer.handle [as handle_request] (/home/ubuntu/workspace/nodejs/node_modules/express/lib/router/layer.js:95:5) at next (/home/ubuntu/workspace/nodejs/node_modules/express/lib/router/route.js:137:13) at Route.dispatch (/home/ubuntu/workspace/nodejs/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/home/ubuntu/workspace/nodejs/node_modules/express/lib/router/layer.js:95:5) at /home/ubuntu/workspace/nodejs/node_modules/express/lib/router/index.js:281:22 at Function.process_params (/home/ubuntu/workspace/nodejs/node_modules/express/lib/router/index.js:335:12) at next (/home/ubuntu/workspace/nodejs/node_modules/express/lib/router/index.js:275:10) at Function.handle (/home/ubuntu/workspace/nodejs/node_modules/express/lib/router/index.js:174:3) at router (/home/ubuntu/workspace/nodejs/node_modules/express/lib/router/index.js:47:12)
getQuotes
変数を正しく呼び出す方法を教えてください。
あなたの返事をよろしくお願いします!そして、あなたはここでvar tick = kraken.getQuote();
を呼び出すgetQuote
買いを呼び出すことができるようになる、それをインポートして、あなたはこのvar kraken = require("./kraken")()
ようにそれを含める必要がありますgetQuote
使用するためには
これを実行した後、別のエラー「ReferenceError:publicClient is not defined」が発生しましたが、これは別の問題です –
Thx。私は上記の 'publicClient'メソッドを追加しました。しかし、私は出力として 'undefined'しか得られず、価格データも得られません。なにか提案を? – mrquad
上記の例では、 'public_client'は今では定義されていません。また、後で 'KrakenClient'の作成とAPI呼び出しが含まれるので、手動でデバッグする必要があると思います –