Bläddra i källkod

fix: improve serialize_milvus_result to properly handle array types

guantao 5 timmar sedan
förälder
incheckning
962df1f108
1 ändrade filer med 8 tillägg och 6 borttagningar
  1. 8 6
      knowhub/server.py

+ 8 - 6
knowhub/server.py

@@ -148,17 +148,19 @@ def serialize_milvus_result(data):
         return [serialize_milvus_result(item) for item in data]
         return [serialize_milvus_result(item) for item in data]
     elif hasattr(data, '__iter__') and not isinstance(data, (str, bytes)):
     elif hasattr(data, '__iter__') and not isinstance(data, (str, bytes)):
         # 处理 RepeatedScalarContainer 等可迭代对象
         # 处理 RepeatedScalarContainer 等可迭代对象
-        return [serialize_milvus_result(item) for item in data]
+        # 先转换为列表,确保返回的是真正的列表而不是字符串表示
+        try:
+            return [serialize_milvus_result(item) for item in list(data)]
+        except:
+            # 如果迭代失败,尝试转换为字符串
+            return str(data)
     elif hasattr(data, 'to_dict'):
     elif hasattr(data, 'to_dict'):
         return serialize_milvus_result(data.to_dict())
         return serialize_milvus_result(data.to_dict())
     elif hasattr(data, '__dict__'):
     elif hasattr(data, '__dict__'):
         return serialize_milvus_result(vars(data))
         return serialize_milvus_result(vars(data))
     else:
     else:
-        # 尝试转换为字符串
-        try:
-            return str(data)
-        except:
-            return None
+        # 最后的fallback
+        return data
 
 
 
 
 def init_db():
 def init_db():