Minha área de estudo não é js mas vou tentar aqui.
Pelo que me parece, a função retorna undefined porque o resultado da chamada assíncrona não é tratado direito. Para resolver fiquei em duvida tbm, recoerri ao ChatGPT e ele falou o seguinte:
Para corrigir esse problema, é necessário usar a sintaxe async/await ou retornar uma Promise para garantir que a função aguarde a resposta da consulta ao banco de dados antes de retornar o resultado
export async function verifyProjectByName(nome) {
try {
const db = await openDb();
const data = await db.get("SELECT nome FROM Projectos WHERE nome = ?", [nome]);
if (data && data.nome) {
return false;
} else {
return true;
}
} catch (erro) {
console.log("Erro ao verificar projeto: ", erro);
throw erro;
}
}
Eu não testei. Mas deve funcionar
Muito obrigado amigo funcionou aqui mas tive que fazer algumas alterações para funcionar. deu outro erro fui procurar a solução do erro e felizmente encontrei no stackOverflow. então ao procurar esse erro eu aprendi algumas coisas tipo essa:
Que toda função async
retorna uma promise
e na hora de chamar têm usar await
.
EX: Na verdade essa função de somar por traz dos panos
async function somar(a, b) {
return a + b
}
È a mesma coisa que
function somar(a, b) {
return new Promise(resolve => {
resolve(a + b)
})
}
não é muita coisa + já me deixou feliz kkkk. Fiquem bem galera.