@katz אני משער שפונקציית insertMany היא פונקציה אסינכרונית (כלומר היא מחזירה מיד promise והפעולה עצמה קורה ברקע אחרי החזרה) ואם כן אי אפשר לתפוס את השגיאות על ידי try/catch רגיל אלא על ידי הצמדת catch ל-promise שהפונקציה מחזירה, ככה:
app.get('/', cors(), (req, res, next) => {
let p = req.query;
collections.insertMany([p]).catch((error) => {
next(),
console.log('myError is:', error);
});
console.log(p);
});
אפשריות נוספת היא להפוך את ה-handler לפונקציה אסינכרונית על ידי הוספת מילת async לפני הצהרת הפונקציה. ואז אפשר לתפוס שגיאות בצורה דמוי סינכרונית אם תכתוב await לפני הקריאה של הפונקציה:
app.get('/', cors(), async (req, res, next) => {
let p = req.query;
try {
await collections.insertMany([p])
console.log(p);
} catch (error) {
next();
console.log('myError is:', error);
}
})
(חשוב שתבין מה עשיתי ובעיקר למה זה נצרך, ולא סתם לפתור את הבעיה על ידי העתקת הקוד התקין...)
אגב, יש הבדל בין שתי הגירסאות שכתבתי בנוגע לעיתוי של הקריאה ל-console.log(p).