2
respostas

Ajuda sobre CRUD/Filtrar Arrays

Bom dia pessoal,

Sou um estudante de Front End (Ainda estou no inicio de POO em Js e ainda não dominei algumas funções avançadas da linguagem) com muita vontade de aprender e pesquisar, essa é a minha primeira postagem no fórum da Alura, sinta-se a vontade para dizer que não pesquisei o suficiente(se for o caso). Vou dar um breve contexto de como está minha ideia:

Esta é o meu primeiro projeto e irei me basear no CRUD abaixo, pretendo criar um Sistema de Gerenciamento de um Restaurante, no qual irei salvar os Objetos Cliente dentro do Array 'db_client', salvando ele no localstorage.

//Retornar o Array salvo no localstorage
const getLocalStorage = () => JSON.parse(localStorage.getItem('db_client')) ?? []

//Salvar o Array no localstorage
const setLocalStorage = (dbClient) => localStorage.setItem("db_client", JSON.stringify(dbClient))

// CRUD - create read update delete

//Delete
const deleteClient = (index) => {
    const dbClient = readClient()
    dbClient.splice(index, 1)
    setLocalStorage(dbClient)
}

//Update
const updateClient = (index, client) => {
    const dbClient = readClient()
    dbClient[index] = client
    setLocalStorage(dbClient)
}

//Read
const readClient = () => getLocalStorage()


//Create
const createClient = (client) => {
    const dbClient = getLocalStorage()
    dbClient.push (client)
    setLocalStorage(dbClient)
}

Minha ideia/dúvida: Cada Cliente irá ter uma posição no Array, correto? 0, 1, 2... etc. Eu quero fazer um Front, onde a cada Cliente criado, ele se associe a um "Card" escrito Mesa 0,1,2,3... etc E a numeração da Mesa, esteja associada a posição do Array. Porém no meu Código, eu estou manipulando o Array através da variável "index" que estou digitando manualmente. Ex.: updateCliente(1, cliente)

Que abstração posso fazer para tornar essa ação de digitar o "index" manualmente, em algo automatizado? Automatizado no exemplo de: Na ação do usuário ao clicar em "Inserir/Salvar Mesa", o número da Mesa ser o mesmo da posição do Cliente no Array 'db_client'?

Por favor, alguém me dê alguma luz sobre essa abstração que precisa ser feita sobre o Index, porque se eu desejo automatizar tudo, esse index vai interferir tanto nessa questão da Mesa, quanto no update/delete do CRUD. Me digam se é possível fazer isso. Me indiquem links, materiais sobre, fico grato desde já.

Atenciosamente, Igor

2 respostas

Igor, se o parâmetro client no método updateClient for um objeto, você pode adicionar uma propriedade ao objeto Cliente, contendo a informação do index, que será utilizado para fazer essa busca no array. Com isso, para realizar esse update, seria algo como:

const updateClient = (client) => {
    const dbClient = readClient()
    const index = client.id //ou qualquer nome para identificar esse index
    dbClient[index] = client
    setLocalStorage(dbClient)
}

Valeu Cândido Luiz!

Vou testar no meu codigo, obrigado pela ajuda!!!