index.js 2.25 KB
const fetch = (...args) => import('node-fetch').then(({ default: fetch }) => fetch(...args));
const url1 = 'https://api.upbit.com/v1/market/all';

const options = { method: 'GET', headers: { Accept: 'application/json' } };
const express=require('express');
const app=express();
const {Coin}=require("./models/Coin");


const mongoose=require('mongoose');
const config=require('./config/key');
const connect = mongoose.connect(config.mongoURI,{
    useNewUrlParser: true, useUnifiedTopology: true
    })
    .then(()=>console.log('디비연결 성공'))
    .catch((err)=>console.log(err));


async function get_marketName() {
    var data=new Array();
    //전체 암호화폐 리스트 불러오기
    let response= await fetch(url1, options)
        .then(res => res.json())
        .then(json => {
            for(i in json){
                data.push(json[i].market);
            }
        })
    return data;
}
async function get_marketInfo(name_list){
    //각 암호화폐 정보 조회
    const url2=`https://api.upbit.com/v1/ticker/?markets=${name_list}`;
    var arr=new Array();
    let response2=await fetch(url2,options)
        .then(res=>res.json())
        .then(json=>{
            for(i in json){
                if(json[i].acc_trade_price_24h>100000000000){
                    arr.push([json[i].market,json[i].acc_trade_price_24h,json[i].trade_price]);
                }   
            }
        })
    return arr
}
async function sort_data(arr){
    arr.sort((a,b)=>{
        return b[1]-a[1];
    })
    return arr;
}
async function save_coin(arr){
    for(var i=0;i<10;i++){
        if(arr[i]){
            const coin=new Coin({
                tid:i+1,
                name:arr[i][0],
                acc_trade_price_24h:arr[i][1],
                current_price:arr[i][2]
            });
            await coin.save((err)=>{
                if(err){
                    console.log(err)
                }
            })
        }
    }
    return true;
}
app.get('/get_market',async (req,res)=>{    
    var name_list=(await get_marketName());
    var market_info=(await get_marketInfo(name_list));
    var sort_info=(await sort_data(market_info));
    console.log(sort_info);
    res.json(await save_coin(sort_info));
    
})
app.listen(5000,()=>{
    console.log('server')
})