瀏覽代碼

ReactiveMiniMongoIndex, added getChecklistItemsWithChecklistId

Martin Filser 2 年之前
父節點
當前提交
316acd0366
共有 2 個文件被更改,包括 24 次插入7 次删除
  1. 22 0
      imports/reactiveCache.js
  2. 2 7
      models/checklists.js

+ 22 - 0
imports/reactiveCache.js

@@ -1129,6 +1129,28 @@ ReactiveMiniMongoIndex = {
       }
     }
     return ret;
+  },
+  getChecklistItemsWithChecklistId(checklistId, addSelect = {}, options) {
+    let ret = []
+    if (checklistId) {
+      const select = {addSelect, options}
+      if (!this.__checklistItemsWithId) {
+        this.__checklistItemsWithId = new DataCache(_select => {
+          const __select = Jsons.parse(_select);
+          const _checklistItems = ReactiveCache.getChecklistItems(
+            { checklistId: { $exists: true },
+              ...__select.addSelect,
+            }, __select.options);
+          const _ret = _.groupBy(_checklistItems, 'checklistId')
+          return _ret;
+        });
+      }
+      ret = this.__checklistItemsWithId.get(Jsons.stringify(select));
+      if (ret) {
+        ret = ret[checklistId] || [];
+      }
+    }
+    return ret;
   }
 }
 

+ 2 - 7
models/checklists.js

@@ -1,4 +1,4 @@
-import { ReactiveCache } from '/imports/reactiveCache';
+import { ReactiveCache, ReactiveMiniMongoIndex } from '/imports/reactiveCache';
 
 Checklists = new Mongo.Collection('checklists');
 
@@ -87,12 +87,7 @@ Checklists.helpers({
     return ret;
   },
   items() {
-    const ret = ReactiveCache.getChecklistItems(
-      {
-        checklistId: this._id,
-      },
-      { sort: ['sort'] },
-    );
+    const ret = ReactiveMiniMongoIndex.getChecklistItemsWithChecklistId(this._id, {}, { sort: ['sort'] });
     return ret;
 
   },