【问题标题】:Node.js importing JSON to PostgreSQLNode.js 将 JSON 导入 PostgreSQL
【发布时间】:2017-07-12 22:05:40
【问题描述】:

我正在尝试使用 Node.js 将 JSON 文件导入 PostgresSQL。我正在使用 mass.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);
    };
  };
};

所以。我正在尝试遍历 JSON,然后插入。 我将它与以下 JSON 一起使用:

{
"data": [{
        "id": 89304,
        "userName": "keith1@keith.keith"
    },
    {
        "id": 87431,
        "userName": null
    },
    {
        "id": 84863,
        "userName": null
    },
    {
        "id": 72371,
        "userName": "toad@toad.com"
    }
   ]
  }

我有以下 PostgresSQL 结构:

  • 数据库: tl
  • 表格: 员工
  • :id(类型:Int、Sequence)
  • :正文(类型:jsonb)

我在 Github 上看到过类似的工作: https://github.com/craigkerstiens/json_node_example

然而我的循环,不会出错,但不会存储任何数据。

我做错了什么吗?

或者,是否有使用 Node.js 将现有 JSON 文件存储到 Postgres 的“最佳方式”?我可以找到很多关于 Node.js + Postgres 的信息,但其中大部分是用于 RESTful 目的。

【问题讨论】:

    标签: javascript json node.js postgresql massivejs


    【解决方案1】:

    saveDoc 是一个异步函数,因此您编写循环的方式是将数据发送出去,然后立即继续检查未设置的err 变量。您需要传递saveDoc 一个回调,它将接收任何错误和结果,并在回调中进行错误检查。由于您正在迭代集合并对每个成员执行异步工作,因此请查看async 提供的map

    【讨论】:

      【解决方案2】:

      你没有等待 saveDoc 函数

      db.saveDoc("employees", parsedJSON.data[i]);
      

      根据文档:https://github.com/dmfay/massive-js

      我们可以通过调用saveDoc来动态创建一个文档表:

      db.saveDoc('test_attributes', { productVersion: '1.0.5',
      testEnvironment: 'production', web: true, accessibilityStandards: ['wcag2a', 'wcag2aa'] }).then(attributes => {...});

      所以也许:

      db.saveDoc("employees", parsedJSON.data[i]).then((res)=>{
      //do something here
      });
      

      【讨论】:

        猜你喜欢
        • 2014-05-23
        • 2017-01-06
        • 2023-04-08
        • 2021-10-08
        • 1970-01-01
        • 1970-01-01
        • 2019-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多