我正在编写一个脚本,该脚本应该将数据从我的数据库转换为另一种格式。基本上我从一个表中获取ID并迭代它们,
function getAllCoinIDs(){
db.any("SELECT coin_id FROM coins")
.then((data) => {
_.each(data, function(entry){
convertToOHLC(entry.coin_id);
})
})
.catch(err => {
console.log(err)
})
}
调用此函数从另一个表中获取与此ID相关的所有数据,按时间戳对它们进行分组并调用下一个函数:
function convertToOHLC(coin_id){
db.any('SELECT * FROM coincap WHERE coin_id=$1 ORDER BY last_updated ASC', coin_id)
.then((data) => {
return _.groupBy(data, function(entry){
return moment(entry.last_updated * 1000).utc().startOf("day").format('x');
})
})
.then((data) => {
_.each(data, function(value, key, dayData){
parseOHLCdaily(key, value, coin_id);
})
})
}
最后一个函数转换数据并将其写入数据库:
function parseOHLCdaily(timestamp, data, coin_id){
var high_btc = _.max(data, function(o){return o.price_btc;}).price_btc;
var low_btc = _.min(data, function(o){return o.price_btc;}).price_btc;
var open_btc = data[0].price_btc
var close_btc = data[data.length - 1].price_btc;
var volume_usd = data[data.length - 1].volume_usd;
var values = [coin_id, open_btc, high_btc, low_btc, close_btc, volume_usd, timestamp];
db.any("INSERT INTO ohlc_daily(coin_id, open_btc, high_btc, low_btc, close_btc, volume_usd, timestamp) SELECT $1, $2, $3, $4, $5, $6, $7", values)
.catch(err => {
console.log(err);
throw err;
})
}
所以我遇到的问题是,到达了parseOHLCdaily(),(如果我添加一个console.log,它会像我期望的那样经常调用)但是没有任何内容写入数据库。没有错误,没有新记录,没有任何内容。真的不知道这里发生了什么。
(我正在使用的软件包:用于数据库查询的pg-promise,用于时间戳/日期操作和下划线的时刻)