【问题标题】:insert data from api pgsql with javascript使用javascript从api pgsql插入数据
【发布时间】:2021-09-08 13:49:33
【问题描述】:

我正在使用 npm 包 (tcmb-doviz-kuru) 从 api 获取货币数据,我正在尝试插入我的数据库。但是我无法映射数据以插入值。这是我的代码:

var tcmbDovizKuru = require('tcmb-doviz-kuru');
var pg = require('pg');


function cb(error, data) {
    if (error) {
        console.log('error', error)
    }

    insertToDatabase(data);
}

function insertToDatabase(data){
    var pgClient = new pg.Client(connectionString);
    pgClient.connect();

  const text = 'INSERT INTO currency.kur("date", forexBuying, forexSelling, banknoteBuying, banknoteSelling, unit, isim, currencyCode)VALUES(CURRENT_TIMESTAMP,$1,$2,$3,$4,$5,$6,$7)'
  const values = data['tarihDate']['currency'];
  pgClient.query( text, values).then(res => {
    console.log("inserted")
  })
  .catch(e => console.error("error"))

tcmbDovizKuru(cb);
}

以及来自 api 的数据示例 (data['tarihDate']['currency']):

 {
    attributes: { crossOrder: '0', kod: 'USD', currencyCode: 'USD' },
    unit: 1,
    isim: 'ABD DOLARI',
    currencyName: 'US DOLLAR',
    forexBuying: 8.2981,
    forexSelling: 8.313,
    banknoteBuying: 8.2922,
    banknoteSelling: 8.3255,
    crossRateUSD: null,
    crossRateOther: null
  },
  {
    attributes: { crossOrder: '1', kod: 'AUD', currencyCode: 'AUD' },
    unit: 1,
    isim: 'AVUSTRALYA DOLARI',
    currencyName: 'AUSTRALIAN DOLLAR',
    forexBuying: 6.1339,
    forexSelling: 6.1739,
    banknoteBuying: 6.1057,
    banknoteSelling: 6.211,
    crossRateUSD: 1.3496,
    crossRateOther: null
  }
  
  ]

如何插入每个值?

【问题讨论】:

    标签: javascript node.js ecmascript-6


    【解决方案1】:

    您插入的数据是一个对象,但您使用的 $1 $2.. 需要一个数组。

    What does the dollar sign ('$') mean when in the string to .query?

    因此,您需要从“data['tarihDate']['currency']”的每个条目中映射对象

    从您的示例数据中插入美国数据

    const usdInfo = data['tarihDate']['currency'][0];
    const valuesArray = [usdInfo.forexBuying, usdInfo.forexSelling, banknoteBuying, banknoteSelling, unit, isim, currencyCode];
    
    pgClient.query( text, valuesArray ).then(res => {
        console.log("inserted", res)
      })
      .catch(e => console.error("error", e))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      相关资源
      最近更新 更多