-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimportData
More file actions
48 lines (41 loc) · 1.49 KB
/
Copy pathimportData
File metadata and controls
48 lines (41 loc) · 1.49 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
const admin = require('firebase-admin');
// Path to the service account key file
const serviceAccount = require('./current-abf8d-firebase-adminsdk-pbcdo-7cbf82ff50.json');
// Initialize the app with a service account, granting admin privileges
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const firestore = admin.firestore();
// Helper function to upload data to Firestore
const uploadData = (collectionName, data) => {
data.forEach(async (item) => {
const document = firestore.collection(collectionName).doc();
await document.set(item);
console.log(`Successfully added document with ID: ${document.id}`);
});
};
// Function to import JSON data into Firestore
const importData = () => {
// Paths to JSON files
const jsonFiles = {
bases: './files/bases_data.json',
stations: './files/stations_data.json',
dynamic: './files/dynamic_data.json',
operators: './files/operators_data.json',
points: './files/points_data.json',
dictionary: './files/dictionaries.json'
};
// Loop over the files and upload to Firestore
for (const [collectionName, filePath] of Object.entries(jsonFiles)) {
const jsonData = require(filePath);
if (!jsonData.data) {
console.error(`No data key found in ${filePath}`);
continue;
}
const dataArray = jsonData.data;
console.log(`Importing ${dataArray.length} items to collection ${collectionName}`);
uploadData(collectionName, dataArray);
}
};
// Start the import
importData();