2016-08-01 5 views
2

NodeJSでCRUD操作をしようとしています。しかし、JSONファイルが特定の部分をすでに持っているかどうかをチェックし、必要なオブジェクトのみを更新し、他のデータを上書きしたり、新しいデータを追加したりしないかどうかを調べる方法はわかりません。jsonファイルに特定のデータが既にある場合、NodeJSをチェックインする方法

これは私が(今の挿入操作は、ファイル全体を上書きだけ挿入されたデータとそれを残し)、これまで持っているものです。

JSON:

JSON: 

{ 
    "id": 1, 
    "name": "Bill", 
}, 
{ 
    "id": 2, 
    "name": "Steve", 
}, 

コード:

var operation = POST.operation; // POST request comes with operation = update/insert/delete 

     if (operation == 'insert') { 
      fs.readFile("data.json", "utf8", function (err) { 
       var updateData = { 
        id: POST.id, 
        name: POST.name, 
       } 
       var newUser = JSON.stringify(updateData); 
       fs.writeFile("data.json", newUsers, "utf8"); 
       console.log(err); 
      }) 
     } 
     else if (operation == 'update') { 
      fs.readFile("data.json", "utf8", function (err) { 

      }) 
     } 
     else if (operation == 'delete') { 
      fs.readFile("data.json", "utf8", function (err) { 

      }) 
     } 
     else 
      console.log("Operation is not supported"); 

私が見つけたほとんどの例は、DatabaseとExpress.jsでした。だから彼らは本当に助けてくれませんでした。

申し訳ありません、私は初心者です。

+0

チェック、それはファイル – madalinivascu

答えて

1

まず、有効なJSON(これはファイルの一部でない限り)ではありません。あなたはそれが有効なJSONをするために、配列にそのリスト全体をラップする必要があります(あなたのJSONが有効であるかどうかを確認できhere

あなたは、このような構造で行く場合:私は思う

[ 
    { 
     "id": 1, 
     "name": "Bill", 
    }, 
    { 
     "id": 2, 
     "name": "Steve", 
    }, 
] 

IDがすでに存在するかどうかを確認する最も簡単な方法は、JSONを配列として読み込み、IDがすでに割り当てられているかどうかを確認することです。このような何か:array.some function

var json = require('/path/to/data.json'); // Your object array 

// In the if (operation == 'insert') block 
var hadId = json.some(function (obj) { 
    return obj.id === POST.ID; 
}); 

if (hasId) { 
    // Do something with duplicate 
} 

json.push({ 
    id: POST.id, 
    name: POST.name 
}); 

// Write the whole JSON array back to file 

より多くのように基本的には(json配列に)メモリに全体のJSONファイルを維持され、あなたは、配列に変更を加えるとき、あなたが書きます更新されたリスト全体をファイルに戻します。

この配列が非常に大きい場合、この問題が発生することがありますが、その時点でデータベースの使用を検討することをおすすめします。 Mongo(これは世界で最大のDBではありません)は、再生や実験中にセットアップを取得してJavaScriptと統合するのがかなり簡単です。

こちらがお役に立てば幸いです。

幸運

+0

に追加されている場合、その日付をゴミ箱ない場合、データは、JSONファイル内のキーとそのユニークなを持っている場合はお時間をいただき、ありがとうございますし、助け:) – Bongskie

+0

ありません問題! :)受け入れていただきありがとうございます。ホープは助けた –

+0

それは確かに、始めるから学ぶために少し難しいでした。スタックのようなサイトを持つのは良いです! – Bongskie

関連する問題