2017-02-22 9 views
0

Node.jsを使用してJSONファイルをPostgresSQLにインポートしようとしています。私はこれをするためにmassive.jsを使用しています。PostgreSQLへのJSONのインポートNode.js

以下

私のJSコードです:

var parsedJSON = require('./employeesTest.json'); 
var express = require("express"); 
var app = express(); 
var http = require('http'); 
var massive = require("massive"); 
var connectionString = "postgres://:@localhost/tl"; 

var db = massive.connectSync({ connectionString: connectionString }); 

var insert = function(err, res) { 
for (i = 0; i < parsedJSON.data.length; i++) { 
    db.saveDoc("employees", parsedJSON.data[i]); 
    if (err) { 
     console.log('error: ', err); 
     process.exit(1); 
    }; 
    }; 
}; 

SoがJSONをループして挿入しようとしています。 私は、次のJSONでこれを使用しています:

{ 
"data": [{ 
     "id": 89304, 
     "userName": "[email protected]" 
    }, 
    { 
     "id": 87431, 
     "userName": null 
    }, 
    { 
     "id": 84863, 
     "userName": null 
    }, 
    { 
     "id": 72371, 
     "userName": "[email protected]" 
    } 
    ] 
    } 

私は、次のPostgresSQL構造:

  • データベース: TL
  • 表:従業員を
  • :id(型:Int、シーケンス)
  • :ボディ(タイプ:jsonb)

私はこの人物のGithubあたりと同様の作業を見てきました: https://github.com/craigkerstiens/json_node_example

はしかし鉱山は、ループエラーはありませんが、任意のデータを格納しません。

私が根本的に間違っていることはありますか?

また、Node.jsを使用して既存のJSONファイルをPostgresに保存する「最良の方法」がありますか? Node.js + Postgresに関する多くの情報を見つけることができますが、その大半はRESTfulな目的のためのものです。

答えて

0

saveDocは非同期関数なので、ループを書き込んだ方法でデータを送信してからすぐに未設定のerr変数をチェックします。 saveDocをコールバックに渡す必要があります。コールバックではエラーと結果が返され、コールバック内でエラーチェックが行われます。コレクションを繰り返し、各メンバで非同期作業を実行しているので、asyncによって提供されるmapを調べてください。

関連する問題