如何按orderId过滤数据并在现有条件中新增companyID存在性校验
问题与解决方案
现有API响应结构
{ success: true, data: { items: [ [Object] ] }, pagination: { totalCount: 1, pageCount: 1, currentPage: 1, perPage: 40 }, status: 200 }
现有条件判断代码
if ((!validate || (validate(item) && (!!item.distributor_br_id && $distributorArr.length > 0 && $distributorArr.includes(item.distributor_br_id))))) { await this.createOrUpdate(modelDoc, item, uniqueFieldName); }
1. 新增companyID存在校验
在原条件逻辑中加入companyID的存在性校验,分两种情况调整:
- 若
companyID是item的直接属性:
if ((!validate || (validate(item) && (!!item.distributor_br_id && $distributorArr.length > 0 && $distributorArr.includes(item.distributor_br_id) && !!item.companyID)))) { await this.createOrUpdate(modelDoc, item, uniqueFieldName); }
- 若
companyID嵌套在item.data下:
// 用可选链操作符避免层级不存在报错 if ((!validate || (validate(item) && (!!item.distributor_br_id && $distributorArr.length > 0 && $distributorArr.includes(item.distributor_br_id) && !!item.data?.companyID)))) { await this.createOrUpdate(modelDoc, item, uniqueFieldName); }
2. 按orderId过滤数据
在处理数据前,先用Array.filter()筛选出符合orderId条件的项,再执行后续逻辑:
- 单一orderId匹配:
// 替换为实际要过滤的orderId值 const targetOrderId = "your-target-order-id"; const filteredItems = response.data.items.filter(item => item.orderId === targetOrderId); // 遍历过滤后的数组处理 for (const item of filteredItems) { // 这里可直接使用上面新增companyID校验后的if条件 if ((!validate || (validate(item) && (!!item.distributor_br_id && $distributorArr.length > 0 && $distributorArr.includes(item.distributor_br_id) && !!item.data?.companyID)))) { await this.createOrUpdate(modelDoc, item, uniqueFieldName); } }
- 多个orderId匹配:
const targetOrderIds = ["order-id-1", "order-id-2"]; const filteredItems = response.data.items.filter(item => targetOrderIds.includes(item.orderId));
内容的提问来源于stack exchange,提问作者Sagar Arya
相关产品推荐
相关产品推荐

