如何从外部api获取数据并将其存储在本地数据库中? (javascript)

时间:2018-06-22 17:58:50

标签: sql node.js postgresql api express

我想从网站的端点获取JSON,并且一旦获取数据,就应该同时将其保存到我的本地数据库中。我正在使用postgresql,node.js和express.js

对其进行编辑以使其更加详细,因为它被搁置了,但是除了我要进行ajax调用以从网站获取数据之外,还不确定要说些什么,我想将该数据保存到本地数据库中我在postgres上。我不想将其转换为CSV或保存json文件然后导入。

我愿意接受其他解决方案。

1 个答案:

答案 0 :(得分:1)

类似的事情可能起作用(而不是睾丸): 我在这里使用伪造的在线API(JSONPlaceholder)来模拟用例...

const express = require('express');
const request = require('request');
const pg = require('pg');

const app = express(); 
const connectionString = 'postgres://username:password@localhost/pg_demo_db' // your connection string 

app.get('/getdata/:id', function(req, res) { 
    if (!req.params.id) { 
       res.status(500); 
       res.send({"Error": "No ID"}); 
    } 
    request.get(
        // here I am using JSONPlaceholder API (Fake Online REST API for prototyping)
        { url: "https://jsonplaceholder.typicode.com/posts/" + req.params.id }, 
        function(error, response, body) { 
            if (!error && response.statusCode == 200) { 
                // get data from body ... e.g. title
                const data = JSON.parse(body);
                const title = data.title || '';

                // store in Postgresql
                pg.connect(connectionString, (err, client, done) => {
                    done();
                    // Handle connection errors
                    if(err) {
                        console.log(err);
                        return res.status(500).json({success: false, data: err});
                    }
                    // SQL Query > Insert Data
                    client.query('INSERT INTO titles(id, title) values($1, $2)', [req.params.id, title]);

                    res.json({title: title}); 
                })
            } 
        }
    ); 
});