5
respostas

Dúvida em como montar o objeto para cadastrar

Boa tarde, eu gostaria de uma ajuda para montar o objeto para cadastrar.

Quando eu cadastro está enviando assim :

{
    "nome": "abcd",
    "nascimento": "01/01/2023",
    "genero": "Masculino",
    "cpf": "123456",
    "telefone": "123456",
    "cep": "123456",
    "logradouro": "abcd",
    "complemento": "",
    "bairro": "abcd",
    "localidade": "Curitiba",
    "uf": "PR",
    "numero": "123456",
    "email": "abcd",
    "senha": "123456",
    "confirmarEmail": "abcd",
    "confirmarSenha": "123456",
    "aceitarTermos": true
}

Eu preciso que ele mande assim :

{
    "nome": "abcd",
    "nascimento": "01/01/2023",
    "genero": "Masculino",
    "cpf": "123456",
    "telefone": "123456",
    "endereco": {
        "cep": "123456",
        "logradouro": "abcd",
        "complemento": "",
        "bairro": "abcd",
        "localidade": "Curitiba",
        "uf": "PR",
        "numero": "123456"
    },
    "usuario": {
        "email": "bruno.mateus@gmail.com",
        "senha": "bruno@123"
    },
    "aceiteTermo": true,
    "tipoPessoa": "CLIENTE"

}

Minha inface está assim :

export interface PessoaUsuario {
    id: number,
    nome: string;
    nascimento: string;
    genero: string,
    cpf: string;
    telefone: string;
    endereco: Endereco,
    usuario: Usuario
    aceiteTermo: boolean,
    tipoPessoa: string
}
  
export interface Endereco {
    cep: string,
    logradouro: string,
    complemento: string    
    bairro: string,    
    localidade: string,
    uf: string,
    numero: string
}
export interface Usuario {
    email: string,
    senha: string
}

Como eu poderia fazer isso por favor ?

5 respostas

Oii, Willian! Tudo bem?

Como sugestão, você pode estar realizando algumas mudanças, como:

Agrupe as propriedades relacionadas ao endereço dentro de um objeto endereco. Para não ter propriedades soltas como cep, logradouro, complemento, etc.

Para exemplificar:

"endereco": {
        "cep": objetoOriginal.cep,
        "logradouro": objetoOriginal.logradouro,
        "complemento": objetoOriginal.complemento,
        "bairro": objetoOriginal.bairro,
        "localidade": objetoOriginal.localidade,
        "uf": objetoOriginal.uf,
        "numero": objetoOriginal.numero
    },

Também agrupe as propriedades relacionadas ao usuário dentro do objeto usuario, contendo as propriedades email e senha. A mesma ideia do objeto anterior.

E por fim, corrija a propriedade aceiteTermo para aceitarTermos, para ficar condizente com o formato desejado.

Espero que dê certo as sugestões. Continue interagindo no fórum compartilhando suas dúvidas, sugestões e projetos.

Bons estudos, William!

Boa tarde Nathalia, muito obrigado pela sua ajuda, consegui ajustar os objetos e agora estou com outra dúvida, eu não quero enviar os campos de confirmação, como eu poderia fazer isso por favor.

    "usuario": {
        "email": "teste@gmail.com",
        "senha": "123",
        "confirmarEmail": "teste@gmail.com",
        "confirmarSenha": "123"
    }

Boa tarde Nathalia, pode me ajudar com essa questão por favor.

Se conseguir pode me chamar no discord por favor

Oii, Willian! Tudo bem?

Para não enviar campos de confirmação, como sugestão, você pode removê-los do objeto antes de fazer a solicitação utilizando a função delete.

Por exemplo:

delete usuario.confirmarEmail;
delete usuario.confirmarSenha; 

Adapte ao seu projeto e realize os testes para observar se o código funciona como desejado.

Espero ter ajudado. Bons estudos, Willian!

Bom dia Nathalia, tudo bem ?

Muito obrigado pela ajuda, eu consegui resolver, mas precisei fazer mais um ajuste.

    delete formCadastro.get("usuario").value.confirmarEmail
    delete formCadastro.get("usuario").value.confirmarSenha
    const novoCadastro = formCadastro.value as PessoaUsuario    

Se eu usar dessa forma, mesmo removendo os campos, ainda mostra a confirmação de e-mail e senha.

const novoCadastro = formCadastro.getRawValue() as PessoaUsuario

A minha dúvida é se eu preciso usar :

getRawValue()

Sabe me dizer se preciso por favor ?