在app启动脚本中使用async不返回任何结果

MCh*_*han 10 javascript node.js

我试图在我的节点应用程序中运行以下脚本以检查是否存在任何用户,如果不存在,则创建第一个管理员用户.然而,脚本什么也不做,即使在使用Try/Catch时也没有任何回报,所以有人可以告诉我在这里我错过了什么/做错了吗?或者我怎么可能发现错误(如果有的话)?谢谢

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);
});
Run Code Online (Sandbox Code Playgroud)

Arp*_*nki 4

当以下代码片段中没有管理员用户时,您不会返回任何回调

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});

    // call cb(user) here
}
Run Code Online (Sandbox Code Playgroud)