שימוש ב-MongoDB בנוד
-
@dovid אמר בשימוש ב-MongoDB בנוד:
אני מבין ראשית כל שכל השאלה נשענת על כך שא"א לעשות await require.
אפשר, אבל צריך לעטוף אותו בפונקציה בגלל שלא קיים toplevel await (אולי קיים בצורה נסיונית, לא בדקתי).
בפתרון הנאיבי שלך הexport קורה לפני החיבור, ממילא הexport מוציא null.
בדיוק
אם ניתן לו אובייקט לכאורה תוכל למלא אותו בהמשך, כלומר ככה גם לא יעבוד?
כן, אבל לא אוכל להשתמש בו בצורה עיוורת כי לא אוכל להיות בטוח שזה מאותחל. אני רוצה לקבל מהמודול אובייקט שאוכל להשתמש בו בלי לדאוג שהוא לא מאותחל.
-
הפיתרון הוא לכאורה להחזיר אובייקט שיעטוף את ה-
db
. כל פונקציה שנקרא על העטיפה יעשה קודםawait
לאובייקט ה-db
האמיתי ואז יעביר את הפונקציה הלאה לאובייקט האמיתי.האם יש דרך לעשות עטיפה כזאת בלי יותר מדי boilerplate? פשוט להגיד ל-JS שכל פונקציה שאני יקרא על האובייקט לא משנה מה השם שלו יעבור דרך קוד העטיפה?
@yossiz אמר בשימוש ב-MongoDB בנוד:
הפיתרון הוא לכאורה להחזיר אובייקט שיעטוף את ה-
db
. כל פונקציה שנקרא על העטיפה יעשה קודםawait
לאובייקט ה-db
האמיתי ואז יעביר את הפונקציה הלאה לאובייקט האמיתי.האם יש דרך לעשות עטיפה כזאת בלי יותר מדי boilerplate? פשוט להגיד ל-JS שכל פונקציה שאני יקרא על האובייקט לא משנה מה השם שלו יעבור דרך קוד העטיפה?
לא מבין את הבעיה
הקלאס מיד חוזר מכיל בתוכו את ה-DB
ופונקציתinsert({1:2})
יכיל בתוכו בדיקה אם ה-DB מחובר, ומחזיר תמיד פרומיז.כך תמיד עושים?!
-
@dovid אמר בשימוש ב-MongoDB בנוד:
למה לא להכניס את כל טעינת האפליקציה לקאלבק?
לחזור לטרום ימי הפרומיז?
-
@אהרן לא התכוונתי דוקא קלאבק, התכוונתי שהאפליקציה כולה תיטען מתוך פונקציה.
ולגבי הלא דבש שבדרך, הרי נוד מאמצת ממש לאט את ההתקדמויות האלה, לא כן? נראה לי הדפדפנים יעקפו אותה עוד מעט.@dovid אמר בשימוש ב-MongoDB בנוד:
נוד מאמצת ממש לאט את ההתקדמויות האלה
שמח שהם מאפשרים לדנו לעקוף אותם בקלות
-
@אהרן לא התכוונתי דוקא קלאבק, התכוונתי שהאפליקציה כולה תיטען מתוך פונקציה.
ולגבי הלא דבש שבדרך, הרי נוד מאמצת ממש לאט את ההתקדמויות האלה, לא כן? נראה לי הדפדפנים יעקפו אותה עוד מעט. -
@yossiz אמר בשימוש ב-MongoDB בנוד:
הפיתרון הוא לכאורה להחזיר אובייקט שיעטוף את ה-
db
. כל פונקציה שנקרא על העטיפה יעשה קודםawait
לאובייקט ה-db
האמיתי ואז יעביר את הפונקציה הלאה לאובייקט האמיתי.האם יש דרך לעשות עטיפה כזאת בלי יותר מדי boilerplate? פשוט להגיד ל-JS שכל פונקציה שאני יקרא על האובייקט לא משנה מה השם שלו יעבור דרך קוד העטיפה?
לא מבין את הבעיה
הקלאס מיד חוזר מכיל בתוכו את ה-DB
ופונקציתinsert({1:2})
יכיל בתוכו בדיקה אם ה-DB מחובר, ומחזיר תמיד פרומיז.כך תמיד עושים?!
@אהרן אמר בשימוש ב-MongoDB בנוד:
ופונקצית insert({1:2}) יכיל בתוכו בדיקה אם ה-DB מחובר, ומחזיר תמיד פרומיז.
הפונקציה
insert
מוגדר כבר על ה-db. לא רציתי לעבור על כל הפונקציות של ה-db ולהעתיק אותם לקלאס. בשביל זה ביקשתי משהו שחוסך boilerplate.
בשפות דינאמיות אחרות יש אפשרות להגדיר פונקציה שירוץ אם קוראים לפונקציה לא קיימת על אובייקט. אם זה היה קיים ב-JS הייתי יכול לעשות פרוקסי ל-DB בקלות עם מעט מאוד קוד. -
@אהרן אמר בשימוש ב-MongoDB בנוד:
ופונקצית insert({1:2}) יכיל בתוכו בדיקה אם ה-DB מחובר, ומחזיר תמיד פרומיז.
הפונקציה
insert
מוגדר כבר על ה-db. לא רציתי לעבור על כל הפונקציות של ה-db ולהעתיק אותם לקלאס. בשביל זה ביקשתי משהו שחוסך boilerplate.
בשפות דינאמיות אחרות יש אפשרות להגדיר פונקציה שירוץ אם קוראים לפונקציה לא קיימת על אובייקט. אם זה היה קיים ב-JS הייתי יכול לעשות פרוקסי ל-DB בקלות עם מעט מאוד קוד.@yossiz אמר בשימוש ב-MongoDB בנוד:
בשפות דינאמיות אחרות יש אפשרות להגדיר פונקציה שירוץ אם קוראים לפונקציה לא קיימת על אובייקט. אם זה היה קיים ב-JS הייתי יכול לעשות פרוקסי ל-DB בקלות עם מעט מאוד קוד.
זה קיים!
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy -
@yossiz אמר בשימוש ב-MongoDB בנוד:
בשפות דינאמיות אחרות יש אפשרות להגדיר פונקציה שירוץ אם קוראים לפונקציה לא קיימת על אובייקט. אם זה היה קיים ב-JS הייתי יכול לעשות פרוקסי ל-DB בקלות עם מעט מאוד קוד.
זה קיים!
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy -
@yossiz יפה מאוד! זה ממש יכול להיות שימושי להמון דברים.
אני כעת חושב שזה יכול לפתור את בעיית הundefined ועוד כמה רעיונות.@dovid אמר בשימוש ב-MongoDB בנוד:
אני כעת חושב שזה יכול לפתור את בעיית הundefined ועוד כמה רעיונות.
אני לא הייתי ברור, אני מתכוון שהרבה פעמים אני עושה שימוש באובייקט בjs כדי לעשות קיבוץ או פעולות אחרות של set (של key value). אם יש כזה דבר אפשר לעשות פוש לאיבר בלי לדעת אם הוא קיים הוא לא כאילו יש שמה כבר מערך (הפרוקסי ידאג ליצור אותו) וגם לבדוק count וכאלה דברים.
תוך כדי כתיבה אני חושב שזה לא כזה מציאה כי אחרי הכל זה קוד, ועם פונקציות יכולתי לעשות הכל, אני אחשוב בהמשך למה נראה לי שזה יעזור לי.