@byted-apaas/server-sdk-node 1.1.26-beta.2 → 1.1.27-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/kunlun/operator/impl/logic.js +19 -21
- package/package.json +1 -1
|
@@ -424,26 +424,24 @@ async function handleLookupCondition(conditions) {
|
|
|
424
424
|
let lookupMap = new Map(), dateSet = new Set();
|
|
425
425
|
let firstObjApiName = conditions[0].left.settings.fieldPath[0].objectApiName;
|
|
426
426
|
let fields = [];
|
|
427
|
-
|
|
428
|
-
let
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
if (cacheResult !== null && cacheResult.missFields.length === 0) {
|
|
436
|
-
fields = cacheResult.successFields;
|
|
437
|
-
}
|
|
438
|
-
// 未命中缓存 / 不读缓存
|
|
439
|
-
if ((cacheResult !== null && cacheResult.missFields.length === 1) || (!needReadCache && queryMap.size === 1)) {
|
|
440
|
-
if (cacheResult !== null && cacheResult.missFields.length === 1) {
|
|
441
|
-
fieldName = cacheResult.missFields[0];
|
|
427
|
+
// 未命中缓存的字段
|
|
428
|
+
let missFields = [...queryMap.keys()];
|
|
429
|
+
const needReadCache = server_common_node_1.utils.getLaneID() !== ''; // 仅打包发布 2.0 支持走 cache
|
|
430
|
+
if (needReadCache) {
|
|
431
|
+
const cacheResult = getLookupObjectAPINamesFromCache(firstObjApiName, queryMap);
|
|
432
|
+
if (cacheResult) {
|
|
433
|
+
fields = cacheResult.successFields;
|
|
434
|
+
missFields = cacheResult.missFields;
|
|
442
435
|
}
|
|
443
|
-
fields.push(await Request.GetInstance().getField(firstObjApiName, fieldName));
|
|
444
436
|
}
|
|
445
|
-
|
|
446
|
-
|
|
437
|
+
// 获取未命中缓存的字段,通过 API 获取
|
|
438
|
+
if (missFields.length === 1) { // 单个获取
|
|
439
|
+
fields.push(await Request.GetInstance().getField(firstObjApiName, missFields[0]));
|
|
440
|
+
}
|
|
441
|
+
else if (missFields.length > 1) { // 批量获取
|
|
442
|
+
const allFields = await Request.GetInstance().getFields(firstObjApiName);
|
|
443
|
+
const fetchSet = new Set(missFields);
|
|
444
|
+
fields.push(...allFields.filter((f) => fetchSet.has(f.api_name)));
|
|
447
445
|
}
|
|
448
446
|
for (const field of fields) {
|
|
449
447
|
parseFieldInfo(field, lookupMap, dateSet);
|
|
@@ -594,7 +592,7 @@ function setFieldCache(objectApiName, fieldName, field) {
|
|
|
594
592
|
localCache.set(getFieldCacheKey(objectApiName, fieldName), field, 60); // 缓存60s
|
|
595
593
|
}
|
|
596
594
|
function getFieldCache(objectApiName, fieldName) {
|
|
597
|
-
|
|
595
|
+
const field = localCache.get(getFieldCacheKey(objectApiName, fieldName));
|
|
598
596
|
return field;
|
|
599
597
|
}
|
|
600
598
|
function getFieldCacheKey(objectApiName, fieldName) {
|
|
@@ -603,8 +601,8 @@ function getFieldCacheKey(objectApiName, fieldName) {
|
|
|
603
601
|
function getLookupObjectAPINamesFromCache(firstObjApiName, queryMap) {
|
|
604
602
|
var missFields = [];
|
|
605
603
|
var successFields = [];
|
|
606
|
-
for (const [fieldName
|
|
607
|
-
|
|
604
|
+
for (const [fieldName] of queryMap) {
|
|
605
|
+
const field = getFieldCache(firstObjApiName, fieldName);
|
|
608
606
|
if (field) {
|
|
609
607
|
successFields.push(field);
|
|
610
608
|
}
|