You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用React.js检查Firebase实时数据库中是否已存在指定id

你写的重复校验逻辑存在逻辑漏洞,嵌套的map和for-in循环不仅冗余,还会出现只要第一个遍历到的订单id不匹配,就直接判定为无重复的错误,哪怕后续有相同id的订单也检测不到。另外你对fetch返回值的判断也不对,fetch只要成功发出请求就会返回response对象,哪怕接口返回404、500等错误状态也不会返回空值,需要判断response.ok属性才能确认请求是否真的成功。

可以直接用数组内置的some()方法完成存在性判断,该方法会遍历数组,只要有一个元素满足判断条件就会直接终止遍历返回true,所有元素都不满足才返回false,刚好适配你的使用场景,修正后的完整代码如下:

export async function progressOrders (found){
    const loadedOrders = await fetchOrders('progress');
    // 校验是否存在相同id的订单
    const isOrderExisted = loadedOrders.some(order => order.id === found.id);
    console.log(isOrderExisted);

    if(isOrderExisted){
        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.ok){
            throw Error('Order not in progress');
        }else{
            alert('Order is in progress now.');
        };
    }
};

内容的提问来源于stack exchange,提问作者Nikita Pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:15:04