התחלת תהליך לאחר סיום תהליך
-
אשמח לעזרה.
אני בונה חנות, ובעמוד סל הקניות בשלב הסופי של בחירת התשלום, סידרתי את זה כך:
אני יוצר הזמנה חדשה במסד נתונים, לאחר מכן אני אני מכניס את כל המוצרים ששמורים עד כה רק ב-local, לתוך מסד נתונים של סל קניות, כל מוצר לסל עם כל הפרטים שלו כמות ומחיר וסך, ואח"כ אני מכניס את כל הפריטים שמסד נתונים סל, לתוך הפריט של ההזמנה שנכנסה.
אני מבין שצריך את החלוקה הזו, בכדי שיהיה שבסל אוכל לפרט על פרטי הפריט, ובהזמנה לרשום את פרטי התשלום וההזמנה.
הבעיה שלמרות שאני מבצע רירפש אחרי יצירת ההזמנה, המוצרים שנכנסו לסל לא נרשמים על ההזמנה החדשה שנוצרה כעת, אלא על ההזמנה האחרונה שבוצעה לפניה. כלומר הפעולה של ההכנסה כנראה מקדימה את התהליך של משיכת הID של ההזמנה החדשה שנוצרה כעת.
אשמח לעזרה.export function button17_click(event, $w) { let mistames = $w("#dataset4").getCurrentItem()._id; let scum = $w('#input15').value let toInsert = { "lakoh": mistames, "mehir": scum, "hazmana": ($w("#dataset3").getTotalCount()) + 1001, }; wixData.insert("hazmanot", toInsert) .then((results) => { $w("#dataset3").refresh() let item = results; let idhazmana = results.id $w('#group1').show() }) $w("#dataset3").refresh() .then(() => { $w("#repeater99").forEachItem(($item, itemData, index) => { let id = itemData._id let muzar = itemData.muzar let camut = Number($item('#input4').value) let mehir = Number(itemData.mehir) let sac2 = mehir * camut let toInsert2 = { "lakoh": mistames, "muzarim": id, "camut": camut, "title": muzar, "sach": sac2 }; wixData.insert("sal", toInsert2) .then((results) => { $w('#dataset1').refresh() let item = results let id2 = item._id console.log(id2); let idhazmana = $w("#dataset3").getCurrentItem()._id; wixData.insertReference("hazmanot", "muzarim", idhazmana, [id2]) .catch((error) => { console.log(error); }); }) .catch((err) => { console.log(err); }); }) })
-
בלי להבין הרבה נראה שיש להכניס את כל הכנסת הפרטים לסל לתוך הקלאבק של יצירת ההזמנה, ככה:
export function button17_click(event, $w) { let mistames = $w("#dataset4").getCurrentItem()._id; let scum = $w('#input15').value let toInsert = { "lakoh": mistames, "mehir": scum, "hazmana": ($w("#dataset3").getTotalCount()) + 1001 }; wixData.insert("hazmanot", toInsert) .then(hazmanaItem => { $w('#group1').show(); $w("#dataset3").refresh() .then(() => { $w("#repeater99").forEachItem(($item, itemData, index) => { let mehir = Number(itemData.mehir); let camut = Number($item('#input4').value); let toInsert2 = { lakoh: mistames, muzarim: itemData._id, title: itemData.muzar, camut, sach: mehir * camut } wixData.insert("sal", toInsert2) .then(newSal => { $w('#dataset1').refresh(); wixData.insertReference("hazmanot", "muzarim", hazmanaItem.id, newSal._id) .catch(console.log); }) .catch(console.log); }) }); }); }
עשיתי שינויי מיניפקיציה בקוד כדי לקצר אותו...
אגב מה המשמעות של השורה הזו:$w("#dataset3").refresh()
-
@מנצפך @dovid
זה בפלטפורמת WIX
זה לא בצד השרת אלא קוד מקומי של טופס סיום הזמנה.
WIX משולב של קוד עם קליקים. אתה מוסיף מסד נתונים, ומתקשר איתו מהקוד, לאחר הכנסה של מידע למסד נתונים, אתה מבצע$w("#dataset3").refresh()
כדי שיתרענן המסד, והאחרון יהיה החדש, כך שאתה מושך ממנו את לוקח את החדש שכרגע הכנסת.
אגב. @dovid רוב מה שקיצרת הבנתי. למדתי.
לא הבנתי לשם מה הוספת את :.then(hazmanaItem => {
.then(newSal => {
ובכל מקרה זה עדין לא עובד טוב..
-
@אבי-203 לא הוספתי, זה כבר היה ככה:
then((results) =>
וא. הורדתי סוגריים, זה אפשרי יש זה פרמטר יחיד, ב. שיניתי לשם נכון יותר ולא results בכל מקום.
אולי תנסה לשים גם את החלק של הוספת הרפרנס לthen שאחרי הרפרש
במקום:$w('#dataset1').refresh(); wixData.insertReference("hazmanot", "muzarim", hazmanaItem.id, newSal._id) .catch(console.log);
תכתוב:
$w('#dataset1').refresh().then( () => wixData.insertReference("hazmanot", "muzarim", hazmanaItem.id, newSal._id) .catch(console.log) );
-
זה עדין לא עבד. נסיתי בדרך אחרת.
let mistames = $w("#dataset4").getCurrentItem()._id; let scum = $w('#input15').value let hazmana = [] await $w("#repeater99").forEachItem(($item, itemData, index) => { let id = itemData._id let muzar = itemData.muzar let camut = Number($item('#input4').value) let mehir = Number(itemData.mehir) let sac2 = mehir * camut let toInsert2 = { "lakoh": mistames, "muzarim": id, "camut": camut, "title": muzar, "sach": sac2 }; wixData.insert("sal", toInsert2) .then((results) => { let item = results let id2 = item._id console.log(id2); hazmana.push(id2) }) .catch((err) => { console.log(err); }); }) console.log(" hazmana: " + hazmana); let toInsert = { "lakoh": mistames, "mehir": scum, "hazmana": ($w("#dataset3").getTotalCount()) + 1001, "muzarim": hazmana, }; await wixData.insert("hazmanot", toInsert) .then((results) => { // $w("#dataset3").refresh() // let item = results; // let idhazmana = results.id $w('#group1').show() }) .catch((err) => { console.log(err); });
אלא שעדין hazmana מודפס לי ריק.
כלומר לא נכנסים בסוף המוצרים שבסל, להזמנה. האובייקט hazmana נשאר ריק.