Skip to content

Commit d8fd81d

Browse files
committed
fix: improve value checks and handling in getData and save functions
1 parent 9255f50 commit d8fd81d

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

src/index.js

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,7 @@ async function getData(form) {
856856
}
857857

858858
let value = await element.getValue();
859-
if (!value && value !== "") continue;
859+
if (value === undefined) continue;
860860

861861
let Data = { ...data };
862862
let dataKey = elements.get(element);
@@ -1014,17 +1014,20 @@ async function getData(form) {
10141014

10151015
async function save(element, action) {
10161016
if (!element) return;
1017-
let data, value;
1017+
let data, value, form;
10181018
let upsert = element.getAttribute("upsert");
10191019
if (upsert && upsert !== "false") upsert = true;
10201020
if (element.tagName === "FORM") {
10211021
data = await element.getData();
10221022
} else {
10231023
let isSave = element.getAttribute("save");
10241024
if (isSave === "false") return;
1025-
1026-
let form = element.closest("form");
1027-
if (form) return save(form);
1025+
if (action) {
1026+
form = element.closest("form");
1027+
if (form) {
1028+
return save(form);
1029+
}
1030+
}
10281031

10291032
let dataKey = elements.get(element);
10301033
data = { ...keys.get(dataKey).dataKey.object };
@@ -1064,21 +1067,25 @@ async function save(element, action) {
10641067
let Data = [];
10651068
for (let i = 0; i < data.length; i++) {
10661069
if (data[i].type === "object") {
1067-
if (typeof data[i].object === "string") {
1070+
if (!data[i].object) {
1071+
data[i].method = "object.create";
1072+
} else if (typeof data[i].object === "string") {
10681073
if (!data[i]._id) data[i].method = "object.create";
10691074
else {
10701075
data[i].method = "object.update";
10711076
if (upsert) data[i].upsert = true;
10721077
}
10731078
} else if (Array.isArray(data[i].object)) {
1074-
if (!data[i].object[0]._id) data[i].method = "object.create";
1075-
else {
1079+
if (!data[i].object[0]._id) {
1080+
data[i].method = "object.create";
1081+
} else {
10761082
data[i].method = "object.update";
10771083
if (upsert) data[i].upsert = true;
10781084
}
10791085
} else if (typeof data[i].object === "object") {
1080-
if (!data[i].object._id) data[i].method = "object.create";
1081-
else {
1086+
if (!data[i].object._id) {
1087+
data[i].method = "object.create";
1088+
} else {
10821089
data[i].method = "object.update";
10831090
if (upsert) data[i].upsert = true;
10841091
}
@@ -1151,7 +1158,9 @@ function setTypeValue(element, data, action) {
11511158

11521159
if (!form) {
11531160
if (data.type === "object") {
1154-
element.setAttribute("object", data.object[0]._id);
1161+
if (data.object && data.object[0] && data.object[0]._id) {
1162+
element.setAttribute("object", data.object[0]._id);
1163+
}
11551164
} else {
11561165
element.setAttribute(data.type, data[data.type].name);
11571166
}
@@ -1310,9 +1319,6 @@ function initSocket() {
13101319
if (data.rendered) return;
13111320

13121321
data.rendered = true;
1313-
if (data && data.key === "answers") {
1314-
console.log("test");
1315-
}
13161322

13171323
setData(null, data);
13181324
});

0 commit comments

Comments
 (0)