MFP JSONStore 8.0.2017033009高级查询超999条返回INVALID_SEARCH_FIELD
解决MFP JSONStore 8.0.2017033009中inside查询数组元素超过999报错的问题
你碰到的是这个特定版本JSONStore的一个明确限制——inside查询接受的数组元素数量上限是999,超过这个值就会触发INVALID_SEARCH_FIELD错误。下面给你两种可行的解决方案:
方案1:拆分查询数组,合并结果
既然单个数组不能超过999个元素,我们可以把你的PROPERTYVALUEARRAY拆分成多个小的子数组,分别执行查询,最后合并所有结果(记得去重,避免重复记录)。
示例代码如下:
// 把大数组拆分成多个最多999元素的子数组 const chunkSize = 999; const splitValueArrays = []; for (let i = 0; i < PROPERTYVALUEARRAY.length; i += chunkSize) { splitValueArrays.push(PROPERTYVALUEARRAY.slice(i, i + chunkSize)); } // 为每个子数组创建查询并执行 const queryPromises = splitValueArrays.map(valueChunk => { const query = WL.JSONStore.QueryPart().inside('PROPERTY', valueChunk); return WL.JSONStore.get("JSONSTORENAME").advancedFind([query]); }); // 合并所有查询结果 Promise.all(queryPromises) .then(allResults => { // 把多个结果数组合并成一个 const combinedResults = [].concat(...allResults); // 根据记录的唯一标识去重(这里假设你的记录有id字段,可根据实际调整) const uniqueResults = [...new Map(combinedResults.map(item => [item.id, item])).values()]; // 这里处理你的筛选结果 console.log('最终筛选记录数:', uniqueResults.length); }) .catch(error => { console.error('查询过程出错:', error); });
方案2:升级JSONStore版本
这个元素数量限制大概率是老版本的一个设计局限或者bug,后续的MFP JSONStore版本(比如较新的8.x版本)已经修复了这个问题。如果你的项目允许升级,直接升级到更高版本的JSONStore插件,就可以直接使用包含1217个元素的数组执行inside查询,无需拆分。
补充说明
这个错误的根源是该版本JSONStore底层对inside查询的参数处理有数量限制,当数组元素达到或超过1000时,内部校验不通过,就会抛出INVALID_SEARCH_FIELD错误。通过上面两种方法都可以绕过或者解决这个问题。
内容的提问来源于stack exchange,提问作者Kawinesh S K
相关产品推荐
相关产品推荐

