בניית טופס רכישה לפי אותיות
-
קודם כל תודה חברים.
מה הסיבה שאתם ממליצים על אובייקט? וגם להכניס את כל הטקסט של התורה?
אני חשבתי על כיון בניתי במסד נתונים טבלה עם כל המידע לכל אות כמה יש אותה בתורה. ואז אם 'דוד' השם שנקנה אז ירד מהאותיות הללו, בלי כל התייחסות מדוייקת לאיפה האות ממוקמת בתורה.מה נעשה עם היתרות? ת. אני עושה את זה שיראו כמה נשאר מכל אות, ואז שיתאימו את עצמם, בנוסף יהיה אופציה אות אקראית ואז אקח ממי שנשאר הכי הרבה..
נ.ב הנה הפירוט המדוייק (מצאתי באיזה מקום..)
א 27057
ב 16344
ג 2109
ד 7032
ה 28052
ו 30513
ז 2198
ח 7187
ט 1802
י 31530
כ+ך 11940
ל 21570
מ+ם 25095
נ+ן 14141
ס 1833
ע 11247
פ+ף 4809
צ+ץ 3982
ק 4694
ר 18125
ש 15596
ת 17949
סכ"ה - 304805 -
@yossiz אמר בבניית טופס רכישה לפי אותיות:
@dovid לפרוס את כל התורה כולה לתוך מערך נשמע לא כל כך יעיל. אבל פעם אחת למי איכפת...
לא התכוונתי שיעשה את זה ככה לכל התורה, זה רק המחשה להמשך.
בשביל לעשות בפועל צריך לקרוא קובץ עם זרם ולעדכן את האובייקט.
(כנ"ל בקשר לייעול של for על הforEach ברור שfor אמור להיות מהר יותר (לא בדקתי את המ"מ) אבל לא חלמתי לעשות את זה בפועל לא בזה ולא בזה). -
@dovid @yossiz
מתקדם ומתקשה. תודה.
שאלה בהקדים.
בשביל לבצע שינוי בשדה מסויים אני חייב פילטר או אפשר להפנות עם תנאי במקום query
כלומר שמתי את האותיות במסד נתונים, עם העמודות הבאות: שם האות, וכמות [ועוד אחד עותק של הכמות שלא ישתנה]
אני חייב לבצע query שיסנן את הטבלה התואמת לאות שצווינה, ואז יוריד מהכמות אחד, או אפשר לכתוב ישר הורד אחד מהכמות של האות המתאימה.
מקווה שהצלחתי להסביר.וגם זה משום מה לא עובד לי, הוא מוריד רק 1 גם אם אותה האות מוזכרת פעמים, למשל 'אבא' הוא מוריד 1 א' ואחד ב'. איפה טעיתי?
function subLetters(word){ for(var l of word){ console.log(l); wixData.query("ot") .contains('ot', l) .find() .then( (results) => { let itemupdate = results.items[0].ms - 1; console.log(itemupdate); let item = results.items[0]; item.ms = itemupdate; console.log(item); wixData.update("ot", item); } } ) .catch( (err) => { let errorMsg = err; } ); } }
-
@אבי-203 אמר בבניית טופס רכישה לפי אותיות:
מצורף. תודה.
לשם 'אבא'}
![alt text](ima ge url)
export function postData(word){ for(var l of word){ console.log(l); wixData.query("ot") .contains('ot', l) .find() .then( (results) => { let itemupdate = results.items[0].ms - 1; console.log(itemupdate); if(itemupdate > 0) { let item = results.items[0]; item.ms = itemupdate; console.log(item); wixData.update("ot", item); } else { console.log("נגמר האות, חפש אות אחרת או אות אקראית"); } } ) .catch( (err) => { let errorMsg = err; } ); } return; }
-
אוקי הבעיה פשוטה.
בלולאה שעוברת על הלולאות יש קריאה לDB שקוראת מה הסכום הנוכחי.
שמים את הסכום במשתנה - 1, ומעדכנים.
כעת העדכון לא מיידי, כך ששתי הקריאות לא' נעשים לפני העדכון הראשון.
יש כמה דרכים להתמודד עם זה, לי נראה הכי יעיל לרכז לפני העדכון את מספר האותיות שיש להסיר:export function postData (word) { var lettersToSub = {}; for (var l of word) lettersToSub[l] = 1 + (lettersToSub[l] || 0); for (var ot in lettersToSub) { wixData.query("ot") .contains('ot', ot) .find() .then((results) => { let itemupdate = results.items[0].ms - lettersToSub[ot]; if (itemupdate >= 0) { let item = results.items[0]; item.ms = itemupdate; wixData.update("ot", item); } else console.log("נגמר האות, חפש אות אחרת או אות אקראית"); }).catch(console.log); } return; }
-
תנסה את הקוד הבא, ואם זה נכשל תביא את הפלט של הקונסול.
export function postData (word) { var lettersToSub = {}; for (var l of word) lettersToSub[l] = 1 + (lettersToSub[l] || 0); for (var ot in lettersToSub) { console.log(ot, lettersToSub[ot]); wixData.query("ot") .contains('ot', ot) .find() .then((results) => { let itemupdate = results.items[0].ms - lettersToSub[ot]; if (itemupdate >= 0) { let item = results.items[0]; item.ms = itemupdate; return wixData.update("ot", item) .then(x => console.log(x[0].ms, x[0].ot)); } else console.log("נגמר האות, חפש אות אחרת או אות אקראית"); }).catch(console.log); } return; }
-
@dovid אמר בבניית טופס רכישה לפי אותיות:
export function postData (word) { var lettersToSub = {}; for (var l of word) lettersToSub[l] = 1 + (lettersToSub[l] || 0); for (var ot in lettersToSub) { console.log(ot, lettersToSub[ot]); wixData.query("ot") .contains('ot', ot) .find() .then((results) => { let itemupdate = results.items[0].ms - lettersToSub[ot]; if (itemupdate >= 0) { let item = results.items[0]; item.ms = itemupdate; return wixData.update("ot", item) .then(x => console.log(x[0].ms, x[0].ot)); } else console.log("נגמר האות, חפש אות אחרת או אות אקראית"); }).catch(console.log); } return; }
ואוו!!!
עובד נהדר!
מה סידרת לא תפסתי.