2017-02-22 54 views
0

我想使用Node.js將JSON文件導入PostgresSQL。我正在使用massive.js來做到這一點。Node.js導入JSON到PostgresSQL

下面是我的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); 
    }; 
    }; 
}; 

所以。我試圖通過JSON循環,然後插入。 我使用這個具有以下JSON:

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

我有以下PostgreSQL的結構:

  • 數據庫: 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