Mongoose and NodeJS: Creating a unique system-generated username
All what you need to do is to add return
statement before generateUniqueAccountName(proposedName)
:
function generateUniqueAccountName(proposedName) { return Account .findOne({accountName: proposedName}) .then(function(account) { if (account) { console.log('no can do try again: ' + proposedName); proposedName += Math.floor((Math.random() * 100) + 1); return generateUniqueAccountName(proposedName); // <== return statement here } console.log('proposed name is unique' + proposedName); return proposedName; }) .catch(function(err) { console.error(err); throw err; });}