2016-11-25 8 views
0

こんにちは、特定のディレクトリにあるすべてのJSONファイルを使用してJSONファイルを作成しようとしています。私はそれがディレクトリに新しいファイルを追加するたびに更新されるようにします。だから、私はこのコードを私のファイルアップロードページの「投稿」部分に書いています。私は次のコードを持っています:NodeJSがカスタム構造を使用してJSONを連結する必要があります

for (i = 0; i < files; i++) { 
     console.log('Entered For loop'); 
     console.log('Count:', count); 
     console.log('Count:', sensor); 
     fs.readFile('/uploads/' + bbbid + '/device'+count+ '.json' , 'utf8', function (err, data) { 
      if (err) throw err; // we'll not consider error handling for now 
      var obj = JSON.parse(data); 
      JSON.stringify(obj); 
      //console.log(myfiles[i]); 
      var ddl = require('/uploads/' + bbbid + '/device' +sensor+ '.json'); 
      //var ddl = require('/uploads/' + bbbid + '/device' + count + '.json'); 
      cddl = cddl + ", {" + obj.DDL.Sensor.Description.Verbose_Description + ":" + JSON.stringify(ddl) + "}" 
      JSON.stringify(cddl); 
      console.log(cddl); 
      count++; 
      sensor++; 
      console.log('Count:', count); 
      console.log('Sensor:', sensor); 
     }); 

    } 

私は、メソッドを開始する前にカウントとセンサーを1に初期化しました。出力は次のようになります。

Entered For loop 
    Count: 2 
    Count: 2 
    Entered For loop 
    Count: 2 
    Count: 2 

forループでfs.readFileを使用できませんか?私はループがreadfile関数に入る前に終了すると思います。助けてください!

+0

非同期ファイルの読み取りを使用していますが、readFileSync(https://nodejs.org/api/fs.html#fs_fs_readfilesync_file_options)を試してください – angrykoala

答えて

2

forループはsyncで、fs.ReadFile asyncはループです。あなたの前提は正しい。あなたがここ

https://nodejs.org/api/fs.html#fs_fs_readfilesync_file_options

を使用する必要が

は一例であり

var fs = require('fs');

var contents = fs.readFileSync('package.json');

console.log(JSON.parse(contents));

・ホープこれは役に立ちます。

+0

コードに必要な変更はありますか? – user7201227

+0

readFileSyncは例外をスローするので、エラー処理を追加する必要があります。しかし、他のすべては大丈夫です。 –

+0

readFileSyncの使用例を挙げることができますか? – user7201227

関連する問題