2017-07-31 14 views
2

私はしばらくの間問題を解決してきましたが、私は完全に原点を理解できないようです。 私のアプリはこのように書きワークフローがあります。Node.JS:ファイルに書き込むときに約束する値がnullになる

  1. を個々の要求
  2. のための項目の配列は、この配列の各項目の個々の要求を作成しなさい:Promise.all(array.map(individualRequest))
  3. は、各要求から情報を取り出し、すべてがシームレスにUを動作しているようだ

JSONファイル内の配列内のすべての項目の変更情報を記録
  • 特定のレイアウトに変更しpを4番目のステップに移動します。 3番目のステップでは、オブジェクトが正しく修正されますが、メインに戻ったとき(各ステップには専用モジュールがあります)、4番目のステップは次のように書いています:[null、null、null ...](元の配列)をJSONファイルに保存します。

    私は(全体の元のコードを掲示せず)のコードでそれを入れて、それを簡単にするかどうかはわかりませんが、あなたはここでフルバージョンを見つけることができます。 https://github.com/Ardzii/mongoNode

    私はアイテムの情報がされていることを知っています

    [ADDED]: {「名」:「DASHEUR」、「A」:[「151.400000」を私は確認のため、変換モジュールにコンソールログを残し、それは私に正しい情報を提供しているため、正しく変換「1」、「1.000」、「b」:「「148.500000」、「1」、「1.000」、「c」:「151.577960」、「0.01000000」、「v」:「「1861.79012466」、 、 "3063.32653118"]、 "p":["151.527639" 、 "150.811326"]、 "t":[688,1205]、 "l":["146.599930"、 "146.599930"]、[h]:["156.118780"、 "156.118780"]、 "o": "148.000000 「}

    私はそれがメイン(app.js)に戻ってきた理由は、何のアイデアがありません:

    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(); 
    

    は、私が手をひどい

    [ヌル、NULL、NULL null、null、null、null、null、null]

    JSONファイルに保存されている

    は...あなたの助けを事前に

    おかげで(再び、それは、配列内の各アイテムに1つの「NULL」だ)と私は、私はそれを明確にし、シンプルに保つことができましたね!

    +3

    。明らかに 'getTickerInfo()'は 'null 'でいっぱいの配列で解決されます –

    +2

    ' if(err)throw err; 'は非同期コールバックで妥当なエラー処理ではないことに気付いていますか? – jfriend00

    +0

    こんにちはjfriend00!まったく...私は全部初心者なので、あなたはより良い方法とこれに適切なフォローアップを与えるためにいくつかの材料を持っているなら、私は素晴らしいだろう – Ardzii

    答えて

    3

    modules/transformTicker.js, line 22

    function transformTicker(ticker) { 
        var result = {}; 
        Object.keys(ticker).forEach((k) => { 
        // Object.keys(ticker[pair]).forEach((k) => { 
         // console.log(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, 
         } 
         console.log(`[ADDED]: ${JSON.stringify(result)}`); 
         return result; 
        // }); 
        }); 
    } 
    

    それが外にする必要がありますしながら、あなたの 'リターン' の文がfor-eachループの後、forEachの関数のスコープ内にあります。

    修正されたバージョン:あなた `getTickerInfo()`と `getTickerList()`関数が何を見ずに間違っているものを言うことは不可能

    function transformTicker(ticker) { 
        var result = {}; 
        Object.keys(ticker).forEach((k) => { 
        // Object.keys(ticker[pair]).forEach((k) => { 
         // console.log(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, 
         } 
         console.log(`[ADDED]: ${JSON.stringify(result)}`); 
        // }); 
        }); 
        return result; 
    } 
    
    +0

    ちょっとTeh!ありがとう、それに戻ってこれをチェックするために私に数時間を許してください! – Ardzii

    +0

    それは確かに私のここの問題でした!すべてが期待通りに機能します!ありがとうTeh – Ardzii

    関連する問題