-
Notifications
You must be signed in to change notification settings - Fork 158
/
Copy pathload.js
52 lines (45 loc) · 1.29 KB
/
load.js
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
const mongo = require("mongodb").MongoClient;
const url = `mongodb://${process.env.MONGODB_USERNAME}:${encodeURIComponent(process.env.MONGODB_PASSWORD)}@${process.env.MONGODB_HOST}:27017/${process.env.MONGODB_DATABASE}`;
var insert = function(collection, data, resolve, reject) {
const d = require(data);
d.results.forEach((doc) => {
doc._id = doc.id;
});
collection.insertMany(d.results, (err, r) => {
if (err) {
if (err.code != 11000) {
return reject(err);
}
}
resolve();
});
}
function loadWithRetry() {
mongo.connect(url, {
useUnifiedTopology: true,
useNewUrlParser: true,
connectTimeoutMS: 300,
socketTimeoutMS: 300,
}, (err, client) => {
if (err) {
console.error(`Error connecting, retrying in 300 msec: ${err}`);
setTimeout(loadWithRetry, 300);
return;
}
var promises = [];
db = client.db(process.env.MONGODB_DATABASE);
promises.push(new Promise((resolve, reject)=>{
insert(db.collection('catalog'), "./data/catalog.json", resolve, reject);
}));
Promise.all(promises)
.then(function() {
console.log('all loaded');
process.exit(0);
})
.catch((err) => {
console.error(`fail to load: ${err}`);
process.exit(1);
});
});
};
loadWithRetry();