2016-05-19 12 views
-1

特定のアクションの前に設定ファイルを作成したいと思います。つまり、私は自分のフォルダに設定ファイルを作成しました。最初は何も入っていませんでした。ファイル(fs node.js)を上書きできないのはなぜですか?

db.getData(function(err,data) { //it's an dynamodb don't know if this matter 
    var entry = { 
     dataItems: data.Items[0].items, 
     timestamp: data.LastEvaluatedKey.timestamp.N 
    }; 

    try { 
     fs.writeFile("./config", JSON.stringify(entry), function (err) { 
      if(err) { 
       throw new Error(err); 
      } 
      callback(); //want to know when file is filled with data 
     }); 

    } catch (err) { 
     throw err; 
    } 
}); 

ファイルが現在コンテンツを持っています

それから私は、次のコード実行します。しかし、この関数が実行される前にファイルをクリアしたくないので、上書きする必要があります。私は再びこのコードを実行すると、私はエラーメッセージが表示されます:

function (exports, require, module, __filename, __dirname) { {"data":{"S":"[{\ 
                     ^^^^^^ 
SyntaxError: Unexpected token : 

だからオブジェクトコードが前のファイルに書いた私のDBからの応答WICHです。このコードを上書きして再度実行しようとしたときに問題が発生しているかどうかをテストするためにファイルにクリアしました。

私は自分の問題である可能性のあることを研究していましたが、人々からの投稿がファイルの上書きを避けようとしていることがわかったので、このファイルを書き込んでミスを犯すと思います。特別な仕事をする。そしてthisウェブサイトではfs.writeFileの使い方を示していますが、違いはわかりません。

+0

あなたはファイルを書き込む前にコールバックを呼び出しています。そして 'data.toString()'はあなたが望むものではありません**(おそらく 'JSON.stringify(data)')です。 –

+0

ファイルの内容が重要ではないので、私はfs.readでその部分を削除しました。だから私は自分のコードoboveを編集しました。toStringはこれが何かを変えるかどうかテストする試みでした。 – nova

+0

あなたはファイルを書く前にコールバックを呼び出しています。 –

答えて

1

有効なデータを返すためにdb.getData関数を嘲笑して動作しています。

var fs = require('fs'); 

var db = { 
    getData: function(callback) { 
    var data = {"Items": [{"items": "entry"}], "LastEvaluatedKey": {"timestamp": {"N": 12323234}}}; 
    callback(null, data); 
    } 
} 

var callback =() => console.log("It worked"); 

db.getData(function(err,data) { //it's an dynamodb don't know if this matter 
    var entry = { 
     dataItems: data.Items[0].items, 
     timestamp: data.LastEvaluatedKey.timestamp.N 
    }; 

    try { 
     fs.writeFile("./config", JSON.stringify(entry), function (err) { 
      if(err) { 
       throw new Error(err); 
      } 
      callback(); //want to know when file is filled with data 
     }); 

    } catch (err) { 
     throw err; 
    } 
}); 

データが正しくシリアル化されていない可能性があります。これは、通訳者が何を不満しているのかを説明します。Unexpected token :

関連する問題