oi pessoal. tudo bem?
seguindo pelos estudos, estou tentando evoluir para o exercício proposto em aula, colocando em prática as classes que estão especificadas no uml do "mão na massa" desta sessão.
Como funcionalidade adicional, estou tentando fazer um gerador de "IDs" únicos para cada novo aluno ingressante, para servir como se fosse num número de matrícula que será registrado como indexador do aluno
Para isso, criei uma função "genarateRandom" que deve fazer a verificação de se o "ID" já existe numa base de dados (criei uma base de dados em txt, só pra praticar) e, em caso negativo, ele cria um novo ID para o aluno ingressante e registra na base de dados:
function generateRandom(){
//lendo o arquivo 'test.txt' , que é o repositório de IDs já criados
fs.readFile('test.txt', 'utf-8', (errrs, repoNumbers) => {
let idMsg;
//gerando um número aleatório que será o ID de matrícula para os novos alunos
const randGen = (Math.floor(Math.random()*100).toString()) + "\n";
if (errrs) throw errrs;
//verificando se o número aleatório que foi gerado já existe na base de dados, em caso positivo, exibo uma mensagem de que usuário já existe, a mensagem é uma das saídas das funções
if(repoNumbers.includes(randGen)){
idMsg = '***id já existe. por favor, tente gerar um novo ID***';
return idMsg}
//caso o ID seja válido, ou seja, ele ainda não exista na base de dados, exibo uma mensagem de sucesso, gravo o ID na base de dados e utilizo o valor como saída da minha função.
else{
fs.appendFile('test.txt', randGen, (error) => {
if (error) throw error;
idMsg = '*** ID gerado com sucesso ***'
return idMsg,randGen})
return (idMsg,randGen)}
})
return randGen
}
console.log(generateRandom());
Resultado obtido como saída:
return console.log(idMsg)
^
ReferenceError: idMsg is not defined
Porém, por algum motivo eu não estou conseguindo extrair os valores dos ID's e as mensagens de confirmação ou erro na geração dos IDs. O retorno é sempre um "undefined". Mesmo quando tento fazer um "console.log" na saída, a resposta é indefinida ou que a saída da função não está definida. Alguém consegue me dar uma superforça pra encontrar aonde estou errando?
As saídas de ID, ou seja, o código de matrículo, será utilizada na classe de "User" que está no UML.