Przeglądaj źródła

fix: add defensive checks in frontend for null array fields

guantao 7 godzin temu
rodzic
commit
67028898eb
1 zmienionych plików z 12 dodań i 6 usunięć
  1. 12 6
      knowhub/server.py

+ 12 - 6
knowhub/server.py

@@ -1597,14 +1597,20 @@ def frontend():
 
             document.getElementById('modalTitle').textContent = '编辑知识';
             document.getElementById('editId').value = k.id;
-            document.getElementById('taskInput').value = k.task;
-            document.getElementById('contentInput').value = k.content;
-            document.getElementById('tagsInput').value = JSON.stringify(k.tags);
-            document.getElementById('scopesInput').value = k.scopes.join(', ');
-            document.getElementById('ownerInput').value = k.owner;
+            document.getElementById('taskInput').value = k.task || '';
+            document.getElementById('contentInput').value = k.content || '';
+            document.getElementById('tagsInput').value = JSON.stringify(k.tags || {});
 
+            // 防御性检查:确保 scopes 是数组
+            const scopes = Array.isArray(k.scopes) ? k.scopes : [];
+            document.getElementById('scopesInput').value = scopes.join(', ');
+
+            document.getElementById('ownerInput').value = k.owner || '';
+
+            // 防御性检查:确保 types 是数组
+            const types = Array.isArray(k.types) ? k.types : [];
             document.querySelectorAll('.type-checkbox').forEach(el => {
-                el.checked = k.types.includes(el.value);
+                el.checked = types.includes(el.value);
             });
 
             document.getElementById('modal').classList.remove('hidden');