Files
complete-node-bootcamp/4-natours/after-section-12/dev-data/data/import-dev-data.js
Jonas Schmedtmann 7f81af0ddf Initial commit 🚀
2019-06-13 15:43:15 +01:00

61 lines
1.5 KiB
JavaScript

const fs = require('fs');
const mongoose = require('mongoose');
const dotenv = require('dotenv');
const Tour = require('./../../models/tourModel');
const Review = require('./../../models/reviewModel');
const User = require('./../../models/userModel');
dotenv.config({ path: './config.env' });
const DB = process.env.DATABASE.replace(
'<PASSWORD>',
process.env.DATABASE_PASSWORD
);
mongoose
.connect(DB, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false
})
.then(() => console.log('DB connection successful!'));
// READ JSON FILE
const tours = JSON.parse(fs.readFileSync(`${__dirname}/tours.json`, 'utf-8'));
const users = JSON.parse(fs.readFileSync(`${__dirname}/users.json`, 'utf-8'));
const reviews = JSON.parse(
fs.readFileSync(`${__dirname}/reviews.json`, 'utf-8')
);
// IMPORT DATA INTO DB
const importData = async () => {
try {
await Tour.create(tours);
await User.create(users, { validateBeforeSave: false });
await Review.create(reviews);
console.log('Data successfully loaded!');
} catch (err) {
console.log(err);
}
process.exit();
};
// DELETE ALL DATA FROM DB
const deleteData = async () => {
try {
await Tour.deleteMany();
await User.deleteMany();
await Review.deleteMany();
console.log('Data successfully deleted!');
} catch (err) {
console.log(err);
}
process.exit();
};
if (process.argv[2] === '--import') {
importData();
} else if (process.argv[2] === '--delete') {
deleteData();
}