Estoy trabajando en un proyecto de inventario usando React. Antes de enviar los datos en progreso.json, quiero verificar si esos datos ya están presentes en el archivo progreso.json para evitar la duplicación usando la identificación proporcionada para cada conjunto de datos. Como todavía estoy aprendiendo React, no tengo soluciones para este problema.
export async function progressOrders (found){ const loadedOrders = await fetchOrders('progress'); let result; //for(const key in loadedOrders){ // result = loadedOrders.filter(() => { // return loadedOrders[key].id === found.id // }); //}; loadedOrders.map(() => { for(const key in loadedOrders){ if(loadedOrders[key].id === found.id){ return result = true; }else{ return result = false; } } return result; }); console.log(result); if(result === true){ alert('Order already in progress state'); }else{ const response = await fetch(`${FIREBASE_DOMAIN}/progressOrders.json`,{ method:"POST", headers:{ "Content-Type": "application/json" }, body: JSON.stringify({ id: found.id, dryFruit: found.dryFruit, weight: found.weight, canteenName: found.canteenName, orderQuantity: found.orderQuantity, newOrderTime: found.newOrderTime }) }); if(!response){ throw Error('Order not in progress'); }else{ alert('Order is in progress now.'); }; } };Si desea evitar la duplicación, utilice siempre lo que debe ser único como clave para esos datos en la base de datos.
Dónde almacenas ahora:
progressOrders: { "somemeaninglesspushid": { ... "id": "orderIdThatMustBeUnique" } }Considere cambiar eso a:
progressOrders: { "orderIdThatMustBeUnique": { ... } } Con esta estructura de datos, el ID del pedido, por definición, será único dentro de los pedidos de progressOrders , ya que las claves son, por definición, únicas con un objeto JSON.
Esta nueva estructura de datos también garantiza que no haya ningún daño al escribir la misma información de pedido varias veces. El resultado después de la segunda escritura (o cualquier subsiguiente) es el mismo que el resultado después de la primera escritura, un concepto conocido como idempotencia.