Using async in app startup script not returning any results

Viewed 442

I am trying to run the following script in my Node app to check if any users exist and if not, create first admin user. Yet the script simply do nothing, return nothing even while using Try/Catch so can someone please tell me what I am missing / doing wrong here? or how I can possibly catch the error (if any)? Thanks

import pmongo from 'promised-mongo';
import crypto from 'crypto';

const salt = 'DuCDuUR8yvttLU7Cc4';

const MONGODB_URI = 'mongodb://localhost:27017/mydb';

const db = pmongo(MONGODB_URI, {
  authMechanism: 'ScramSHA1'
}, ['users']);


async function firstRunCheckAndCreateSuperAdmin(cb) {

  const username = 'admin2@test2.com';

  try {
     const user = await db.users.findOne({ role: 'admin'});
     console.log(user);
     if(!user) return cb('No user found');
  } catch(e) {
      cb('Unexpected error occurred');
  }

  if(!user) {
    console.log('No admin detected.');

    const adminPassword = crypto.pbkdf2Sync ( 'password', salt, 10000, 512, 'sha512' ).toString ( 'hex' );
    await db.users.update({username: username}, {$set: {username: username, password: adminPassword, role: 'admin'}}, {upsert: true});
  }

  db.close();
  process.exit();
}

firstRunCheckAndCreateSuperAdmin(function(err, resultA){
    if(err) console.log(err);
});
3 Answers
Related