Executando verificação de segurança...
1

[AJUDA] - return não funciona

então amigos, a função serve para verificar se já existe um projecto com um determinado
nome no bd, caso já exista ele retorna true caso não ele retorna falso.
mas ai ela retorna undifined enquanto ele tinha que retorna true ou false.

export function verifyProjectByName(nome) {
  openDb().then((db) => {
    db.get("SELECT nome FROM Projectos WHERE nome = ?", [nome]).then((data) => {
        console.log(data);
        if (data.nome) {
          return false;
        } else {
          return true;
        }
      }).catch((erro) => {
        console.log("Projecto não encontrado: ", erro);
      });
  });
}
Carregando publicação patrocinada...
1

tentativa 1: coloque return openDb().then.........

tentaiva 2: use async/await

ps: eu todos os meus projetos JS eu uso async/await, evito ao máximo usar "then"

1
1
1

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

1

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.

1

Tentei no Stack Otbm mas não tinha encontrado. Aí pra agilizar procurei pelo chatGPT :)

Nossa, interessante. Não sabia dessa (Faz tempo que não estudo JS, aprendi na faculdade ano passado só... kkkk)