节点链接异步函数

时间:2017-10-17 13:04:18

标签: node.js asynchronous promise

我正在编写一个脚本,该脚本应该将数据从我的数据库转换为另一种格式。基本上我从一个表中获取ID并迭代它们,

function getAllCoinIDs(){
 db.any("SELECT coin_id FROM coins")
  .then((data) => {
    _.each(data, function(entry){
      convertToOHLC(entry.coin_id);
    })
  })
  .catch(err => {
    console.log(err)
  })
}

调用此函数从另一个表中获取与此ID相关的所有数据,按时间戳对它们进行分组并调用下一个函数:

function convertToOHLC(coin_id){
  db.any('SELECT * FROM coincap WHERE coin_id=$1 ORDER BY last_updated ASC', coin_id)
  .then((data) => {
    return _.groupBy(data, function(entry){
      return moment(entry.last_updated * 1000).utc().startOf("day").format('x');
    })
  })
  .then((data) => {
    _.each(data, function(value, key, dayData){
      parseOHLCdaily(key, value, coin_id);
    })
  })
}

最后一个函数转换数据并将其写入数据库:

function parseOHLCdaily(timestamp, data, coin_id){
  var high_btc = _.max(data, function(o){return o.price_btc;}).price_btc;
  var low_btc = _.min(data, function(o){return o.price_btc;}).price_btc;
  var open_btc = data[0].price_btc
  var close_btc = data[data.length - 1].price_btc;

  var volume_usd = data[data.length - 1].volume_usd;
  var values = [coin_id, open_btc, high_btc, low_btc, close_btc,  volume_usd, timestamp];

  db.any("INSERT INTO ohlc_daily(coin_id, open_btc, high_btc, low_btc, close_btc, volume_usd, timestamp) SELECT $1, $2, $3, $4, $5, $6, $7", values)
  .catch(err => {
    console.log(err);
    throw err;
  })
}

所以我遇到的问题是,到达了parseOHLCdaily(),(如果我添加一个console.log,它会像我期望的那样经常调用)但是没有任何内容写入数据库。没有错误,没有新记录,没有任何内容。真的不知道这里发生了什么。

(我正在使用的软件包:用于数据库查询的pg-promise,用于时间戳/日期操作和下划线的时刻)

0 个答案:

没有答案