Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

HilarYo

Ajuda Query INSERT com Expressões Condicionais

Mensagens Recomendadas

HilarYo    0
HilarYo

Boa noite,

Por exemplo tenho a seguinte função:

function updateUser(user_id, params) {
    const query = `UPDATE users 
                   SET user_name = $1,
                       user_brithday = $2,
                       user_active = $3
                   WHERE user_id = $4`;
    const queryParams = [
        params.user_name,
        params.user_brithday,
        params.user_ative,
        user_id
    ];

    return pg.query(query, queryParams);
}

O que queria fazer era o seguinte, passar o objecto "params", e por exemplo se uma das chaves for undefined, deixar o valor que lá está, se não substituir pelo novo valor.

Estive a pesquisar e encontrei as Expressões condicionais, alguém que já trabalhou com isso que me pode ajudar a fazer esta verificação?

Obrigado 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
iron    7
iron
function updateUser(user_id, params) {
  const paramsObj = []
  const queryParams = [];

  for(var key : params){
    if(params[key]){
      paramsObj.push({ prop: key, value: params[key] })
      queryParams.push(params[key])
    }
  }

  queryParams.push(user_id)

  const query = 'UPDATE users SET '
  for(let i = 0; i < paramsObj.length; ++i){
    if(i > 0) query += ', '
    query += obj.prop + ' = ' + obj.value 
  }
  query += ' WHERE user_id = $' + queryParams.length

  return pg.query(query, queryParams);
}

 

Fiz isto assim de cabeça. É possivel que tenha algum erro.

 

Mas podes tentar algo assim. Este código nao adiciona se for null ou undefined. Se quiseres apenas alterar o undefined, adiciona o " === undefined" ao primeiro if

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.