Taichi Masuyama 4 лет назад
Родитель
Сommit
7bafc80d14

+ 6 - 4
packages/app/src/server/service/search-delegator/elasticsearch.ts

@@ -991,15 +991,17 @@ class ElasticsearchDelegator implements SearchDelegator<Data, ESTermsKey, ESQuer
   }
   }
 
 
   isTermsNormalized(terms: Partial<QueryTerms>): terms is ESQueryTerms {
   isTermsNormalized(terms: Partial<QueryTerms>): terms is ESQueryTerms {
-    const keys = Object.keys(terms);
+    const entries = Object.entries(terms);
 
 
-    return keys.every(k => AVAILABLE_KEYS.includes(k));
+    return !entries.some(([key, val]) => !AVAILABLE_KEYS.includes(key) && val.length > 0);
   }
   }
 
 
   validateTerms(terms: QueryTerms): UnavailableTermsKey<ESTermsKey>[] {
   validateTerms(terms: QueryTerms): UnavailableTermsKey<ESTermsKey>[] {
-    const keys = Object.keys(terms);
+    const entries = Object.entries(terms);
 
 
-    return keys.filter((k): k is UnavailableTermsKey<ESTermsKey> => !AVAILABLE_KEYS.includes(k));
+    return entries
+      .filter(([key, val]) => !AVAILABLE_KEYS.includes(key) && val.length > 0)
+      .map(([key]) => key as UnavailableTermsKey<ESTermsKey>);
   }
   }
 
 
   async syncPageUpdated(page, user) {
   async syncPageUpdated(page, user) {

+ 4 - 2
packages/app/src/server/service/search-delegator/private-legacy-pages.ts

@@ -90,9 +90,11 @@ class PrivateLegacyPagesDelegator implements SearchDelegator<IPage, MongoTermsKe
   }
   }
 
 
   validateTerms(terms: QueryTerms): UnavailableTermsKey<MongoTermsKey>[] {
   validateTerms(terms: QueryTerms): UnavailableTermsKey<MongoTermsKey>[] {
-    const keys = Object.keys(terms);
+    const entries = Object.entries(terms);
 
 
-    return keys.filter((k): k is UnavailableTermsKey<MongoTermsKey> => !AVAILABLE_KEYS.includes(k));
+    return entries
+      .filter(([key, val]) => !AVAILABLE_KEYS.includes(key) && val.length > 0)
+      .map(([key]) => key as UnavailableTermsKey<MongoTermsKey>); // use "as": https://github.com/microsoft/TypeScript/issues/41173
   }
   }
 
 
 }
 }