seedDb.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const mongoose = require('mongoose');
  2. const User = require('../models/user');
  3. const data = require('./data.js');
  4. const keys = require('../keys');
  5. class DB {
  6. constructor() {
  7. this.collections = Object.keys(data).map(collection => collection);
  8. }
  9. async cleanDb() {
  10. for (let collection of this.collections) {
  11. var model = data[collection].model;
  12. if (model) {
  13. await model.deleteMany({}, () => {});
  14. console.log(`Data for model ${model.collection.collectionName} Deleted!`)
  15. }
  16. }
  17. }
  18. async pushDataToDb() {
  19. var collectionToResolve = [];
  20. for (let collection of this.collections) {
  21. collectionToResolve.push(Promise.all(
  22. data[collection].items.map(item =>
  23. (new data[collection].model(item)).save()
  24. )
  25. ).then(data => console.log(collection, 'collection saved!')))
  26. }
  27. return Promise.all(collectionToResolve);
  28. }
  29. async seedDb() {
  30. await this.cleanDb();
  31. await this.pushDataToDb();
  32. console.log('Data Populated!')
  33. }
  34. }
  35. mongoose.connect(keys.DB_URI, { useNewUrlParser: true })
  36. .then(async () => {
  37. const db = new DB();
  38. await db.seedDb();
  39. console.log('You can close connection now!')
  40. })
  41. .catch(err => console.log(err));