소스 검색

fix: query error after switching collection (#593)

Signed-off-by: ryjiang <jiangruiyi@gmail.com>
ryjiang 1 년 전
부모
커밋
b25477a7e0
1개의 변경된 파일11개의 추가작업 그리고 3개의 파일을 삭제
  1. 11 3
      client/src/hooks/Query.ts

+ 11 - 3
client/src/hooks/Query.ts

@@ -3,6 +3,7 @@ import { DataTypeStringEnum, MIN_INT64 } from '@/consts';
 import { CollectionService } from '@/http';
 import { CollectionFullObject, FieldObject } from '@server/types';
 
+// TODO: refactor this, a little bit messy
 export const useQuery = (params: {
   collection: CollectionFullObject;
   fields: FieldObject[];
@@ -69,7 +70,8 @@ export const useQuery = (params: {
   // query function
   const query = async (
     page: number = currentPage,
-    consistency_level = consistencyLevel
+    consistency_level = consistencyLevel,
+    _outputFields = outputFields
   ) => {
     if (!collection || !collection.loaded) return;
     const _expr = getPageExpr(page);
@@ -79,7 +81,7 @@ export const useQuery = (params: {
     try {
       const queryParams = {
         expr: _expr,
-        output_fields: outputFields,
+        output_fields: _outputFields,
         limit: pageSize || 10,
         consistency_level,
         // travel_timestamp: timeTravelInfo.timestamp,
@@ -141,6 +143,7 @@ export const useQuery = (params: {
   const reset = () => {
     setCurrentPage(0);
     setQueryResult({ data: [], latency: 0 });
+
     pageCache.current.clear();
   };
 
@@ -155,8 +158,13 @@ export const useQuery = (params: {
     reset();
     // get count;
     count();
+
+    // update output fields, then query again
+    const newOutputFields = fields.map(i => i.name) || [];
+    setOutputFields(newOutputFields);
+
     // do the query
-    query();
+    query(currentPage, consistencyLevel, newOutputFields);
   }, [expr, pageSize, collection.collection_name]);
 
   return {