data_importer.js
1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* data_import
* Created by lintry on 2020/1/28.
*/
const _ = require('lodash'),
po = global.po,
logger = global.loggers.system;
const id_worker = require('../modules/id_worker');
const api_sdk = new (require('kml-api-request'))();
const uid = new (require('../modules/UniqueId'))();
class DataImporter {
constructor (dbo) {
this.dbo = dbo;
}
/**
* 导入json数据
* @param json_data
* @returns {Promise<void>}
*/
async import_data (json_data) {
const dbo = this.dbo;
let Timeline = po.import(dbo, 'timeline_area');
let areas = [];
for (let row of json_data) {
let {provinceName,
provinceShortName,
confirmedCount,
suspectedCount,
curedCount,
deadCount,
comment,
cities,
updateTime,
country} = row;
areas.push({
id: uid.hash(updateTime, provinceName),
province_name: provinceName,
province_short_name: provinceShortName,
confirmed_count: confirmedCount,
suspected_count: suspectedCount,
cured_count: curedCount,
dead_count: deadCount,
comment,
cities,
update_time: updateTime,
country
})
}
await Timeline.bulkCreate(areas, {ignoreDuplicates: true});
}
async import_url (url, param) {
let json_data = await api_sdk.get(url, param);
await this.import_data(json_data.results||[]);
}
}
module.exports = DataImporter;