NodeJS:async / await为什么我的变量没有添加到对象

时间:2017-08-01 10:48:08

标签: json node.js object async-await

我有一个基于API请求编写JSON文件的应用程序,我想在我收集和重新排列的对象中添加timeStamp。

所以我得到一个完整的请求,最终进入“变换器”以使数据适应我想要的布局,如下所示:

// Own Modules
var getSingleTicker = require('./getSingleTicker').getSingleTicker;
var getServerTime = require('./getServerTime').getServerTime;

async function transformTicker(ticker) {
  var result = {};
  var timeStamp = {};
  var timeStamp = await getServerTime();
  Object.keys(ticker).forEach((k) => {
      result= {
        name: k,
        a: ticker[k].a,
        b: ticker[k].b,
        c: ticker[k].c,
        v: ticker[k].v,
        p: ticker[k].p,
        t: ticker[k].t,
        l: ticker[k].l,
        h: ticker[k].h,
        o: ticker[k].o,
        n: timeStamp,
      }
      console.log(`[ADDED]: ${JSON.stringify(k)}`);
    // });
  });
  return result;
}

module.exports = {
  transformTicker,
}

正如您所看到的,该函数应该等待timeStamp请求的结果,然后将timeStamp追加到每个结果(有各种请求)为'n'。 但是,当我这样做时,timeStamp会打印到控制台:

  

[已添加]:“XLTCZUSD”{“unixtime”:1501573081,“rfc1123”:“星期二,8月1日17   07:38:01 +0000“} [已添加]:”XXRPZUSD“   {“unixtime”:1501573084,“rfc1123”:“星期二,8月1日07:38:04 +0000”}   [已添加]:“DASHUSD”{“unixtime”:1501573085,“rfc1123”:“星期二,8月1日17   07:38:05 +0000“} [已添加]:”XZECZUSD“   {“unixtime”:1501573084,“rfc1123”:“星期二,8月1日07:38:04 +0000”}   [已添加]:“XXBTZUSD”{“unixtime”:1501573080,“rfc1123”:“星期二,8月1日17   07:38:00 +0000“} [已添加]:”XREPZEUR“   {“unixtime”:1501573197,“rfc1123”:“星期二,1月17日07:39:57 +0000”}

但不会写入JSON。写作发生在main(app.js)中,然后有一堆模块请求>收集并最终转换来自REST Api的信息。

这是主要的:

async function worker() {
      var tickerList = await getTickerList();
      var tickerInfo = await getTickerInfo(tickerList);
      var filename = `./modules/batches/${new Date().toISOString()}batch.json`;

      fs.writeFile(filename, JSON.stringify(tickerInfo), (err) => {
          if (err) throw err;
          console.log("[SUCCESS]: All tickers processed successfully!");
      });
  }

  worker();

tickerList =要查找

的代码数组

完整请求从以下模块开始:

// Own Modules
// var tickerList = require('./getTickerList');
var getSingleTicker = require('./getSingleTicker').getSingleTicker;

  function getTickerInfo(tickerList) {
    if (tickerList) {
      console.log('[SUCCESS]: Initiating the process');
      return Promise.all(tickerList.map(getSingleTicker));
    } else {
    console.log('[FAILED]: There was a problem importing the list.');
    }
  }

module.exports = {
  getTickerInfo,
}

然后到getSingleTicker:

// Own Modules
const getFromApi = require('./getFromApi').getFromApi;
const transformTicker = require('./transformTicker').transformTicker;

function getSingleTicker(tick) {
 return getFromApi('Ticker', {pair: tick})
      .then(transformTicker).catch((error) => {
console.log('[FAILED]: ', error);
  });
}

module.exports = {
  getSingleTicker,
}

最后到了transformTicker(我正在尝试添加timeStamp)。 时间戳来自:

var getFromApi = require('./getFromApi').getFromApi;

function getServerTime() {
  return getFromApi('Time').then((res) => {
    console.log(JSON.stringify(res));
  }).catch((error) => {
    console.log('[ERROR]: ', error);
  });
}

module.exports = {
  getServerTime,
}

您可以在此处找到整个项目:https://github.com/Ardzii/mongoNode

非常感谢您的帮助!

0 个答案:

没有答案