From 1cc0c66835da8c48b5b89a9611d9b67c3cd91aa5 Mon Sep 17 00:00:00 2001 From: Nguyen Quang Huy Date: Sat, 11 Apr 2026 18:49:05 +0700 Subject: [PATCH 1/3] add logs --- controllers/homeController.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/controllers/homeController.js b/controllers/homeController.js index e070c6c..dddd4eb 100644 --- a/controllers/homeController.js +++ b/controllers/homeController.js @@ -194,6 +194,9 @@ exports.api = async (req, res) => { const baseUrl = process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + console.log("[homeController.api] BACKEND_URL=", process.env.BACKEND_URL); + console.log("[homeController.api] resolved baseUrl=", baseUrl); + // === Xử lý Blog Preview động === const blogPreview = data.blogPreview || {}; let blogs = []; From ac40097bddefbfa371efc886d046d08c690c4a1f Mon Sep 17 00:00:00 2001 From: Nguyen Quang Huy Date: Sat, 11 Apr 2026 19:04:26 +0700 Subject: [PATCH 2/3] add logs --- controllers/homeController.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/controllers/homeController.js b/controllers/homeController.js index dddd4eb..e3b5f12 100644 --- a/controllers/homeController.js +++ b/controllers/homeController.js @@ -195,6 +195,8 @@ exports.api = async (req, res) => { process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; console.log("[homeController.api] BACKEND_URL=", process.env.BACKEND_URL); + console.log("[homeController.api] BACKEND_URL raw:", JSON.stringify(process.env.BACKEND_URL)); + console.log("[homeController.api] BACKEND_URL truthy:", !!process.env.BACKEND_URL); console.log("[homeController.api] resolved baseUrl=", baseUrl); // === Xử lý Blog Preview động === From fab72e86a60fe9258a04af33b393d81f9cc7458a Mon Sep 17 00:00:00 2001 From: Nguyen Quang Huy Date: Sat, 11 Apr 2026 19:15:01 +0700 Subject: [PATCH 3/3] change || to ?? --- controllers/aboutUsController.js | 2 +- controllers/activityController.js | 6 +++--- controllers/blogController.js | 6 +++--- controllers/contactController.js | 2 +- controllers/homeController.js | 7 +------ controllers/insuranceController.js | 8 ++++---- controllers/safetyController.js | 2 +- controllers/serviceController.js | 4 ++-- controllers/termsController.js | 8 ++++---- controllers/travelController.js | 2 +- controllers/videoGalleryController.js | 2 +- controllers/visaController.js | 2 +- 12 files changed, 23 insertions(+), 28 deletions(-) diff --git a/controllers/aboutUsController.js b/controllers/aboutUsController.js index b46b1ee..a41af32 100644 --- a/controllers/aboutUsController.js +++ b/controllers/aboutUsController.js @@ -72,7 +72,7 @@ exports.getAbout = async (req, res) => { // =============================== const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(rawData, baseUrl); res.json(processedData); diff --git a/controllers/activityController.js b/controllers/activityController.js index 532fffb..bb8455b 100644 --- a/controllers/activityController.js +++ b/controllers/activityController.js @@ -9,7 +9,7 @@ exports.api = async (req, res) => { try { // Return structured response with filters and camps const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; // Get filters document (single doc with isFiltersDoc:true) const filtersDoc = await Activity.findOne({ isFiltersDoc: true }).lean(); @@ -53,7 +53,7 @@ exports.apiDetail = async (req, res) => { } const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processed = addBaseUrlToImages(activity, baseUrl); return res.json(processed); @@ -565,7 +565,7 @@ exports.preview = async (req, res) => { } const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processed = addBaseUrlToImages(activity, baseUrl); res.json(processed); diff --git a/controllers/blogController.js b/controllers/blogController.js index dbe89ea..d6ceeec 100644 --- a/controllers/blogController.js +++ b/controllers/blogController.js @@ -445,7 +445,7 @@ exports.api = async (req, res) => { // Add base URL to images const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedBlogs = blogs.map((blog) => addBaseUrlToImages(blog, baseUrl), ); @@ -515,7 +515,7 @@ exports.apiShow = async (req, res) => { // Add base URL to images const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedBlog = addBaseUrlToImages(blog, baseUrl); res.json({ @@ -662,7 +662,7 @@ exports.apiRecent = async (req, res) => { // Add base URL to images const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedPosts = recentPosts.map((post) => addBaseUrlToImages(post, baseUrl), ); diff --git a/controllers/contactController.js b/controllers/contactController.js index ecd4ea3..a1c3c28 100644 --- a/controllers/contactController.js +++ b/controllers/contactController.js @@ -22,7 +22,7 @@ exports.api = async (req, res) => { return res.status(404).json({ error: "Contact data not found" }); } const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(contact, baseUrl); res.json(processedData); } catch (err) { diff --git a/controllers/homeController.js b/controllers/homeController.js index e3b5f12..f1ca27c 100644 --- a/controllers/homeController.js +++ b/controllers/homeController.js @@ -192,12 +192,7 @@ exports.api = async (req, res) => { try { let data = await getHomeData(); const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; - - console.log("[homeController.api] BACKEND_URL=", process.env.BACKEND_URL); - console.log("[homeController.api] BACKEND_URL raw:", JSON.stringify(process.env.BACKEND_URL)); - console.log("[homeController.api] BACKEND_URL truthy:", !!process.env.BACKEND_URL); - console.log("[homeController.api] resolved baseUrl=", baseUrl); + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; // === Xử lý Blog Preview động === const blogPreview = data.blogPreview || {}; diff --git a/controllers/insuranceController.js b/controllers/insuranceController.js index ba4a790..5978dbd 100644 --- a/controllers/insuranceController.js +++ b/controllers/insuranceController.js @@ -17,7 +17,7 @@ exports.api = async (req, res) => { // Sử dụng helper để thêm base URL vào đường dẫn ảnh const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(insuranceData, baseUrl); // Trả về trực tiếp hero, page, content (không wrap trong object) @@ -56,7 +56,7 @@ exports.getInsuranceData = async (req, res) => { // Thêm base URL vào đường dẫn ảnh const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(insuranceData, baseUrl); res.json({ @@ -93,7 +93,7 @@ exports.getByLanguage = async (req, res) => { // Thêm base URL vào đường dẫn ảnh const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(insuranceData, baseUrl); res.json({ @@ -196,7 +196,7 @@ exports.preview = async (req, res) => { // Thêm base URL vào đường dẫn ảnh cho preview const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedHeroData = addBaseUrlToImages(heroData, baseUrl); // Render preview HTML diff --git a/controllers/safetyController.js b/controllers/safetyController.js index 953faa6..1cf4315 100644 --- a/controllers/safetyController.js +++ b/controllers/safetyController.js @@ -21,7 +21,7 @@ exports.api = async (req, res) => { return res.status(404).json({ error: "Safety data not found" }); } const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(safety, baseUrl); res.json(processedData); } catch (err) { diff --git a/controllers/serviceController.js b/controllers/serviceController.js index 9c25c63..078240b 100644 --- a/controllers/serviceController.js +++ b/controllers/serviceController.js @@ -247,7 +247,7 @@ exports.api = async (req, res) => { try { const serviceData = await getServiceData(); const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(serviceData, baseUrl); res.json(processedData); @@ -285,7 +285,7 @@ exports.getServiceBySlug = async (req, res) => { } const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; // Return service details in the expected format const responseData = { diff --git a/controllers/termsController.js b/controllers/termsController.js index 79bd924..e170790 100644 --- a/controllers/termsController.js +++ b/controllers/termsController.js @@ -19,7 +19,7 @@ exports.api = async (req, res) => { // Sử dụng helper để thêm base URL vào đường dẫn ảnh // Truyền baseUrl từ request hoặc từ environment const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(termsData, baseUrl); res.json({ @@ -57,7 +57,7 @@ exports.getTermsData = async (req, res) => { // Thêm base URL vào đường dẫn ảnh const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(termsData, baseUrl); res.json({ @@ -91,7 +91,7 @@ exports.getByLanguage = async (req, res) => { // Thêm base URL vào đường dẫn ảnh const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(termsData, baseUrl); res.json({ @@ -326,7 +326,7 @@ exports.preview = async (req, res) => { // Thêm base URL vào đường dẫn ảnh cho preview const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedHeroData = addBaseUrlToImages(heroData, baseUrl); // Render preview HTML diff --git a/controllers/travelController.js b/controllers/travelController.js index 834dde8..f4e6592 100644 --- a/controllers/travelController.js +++ b/controllers/travelController.js @@ -179,7 +179,7 @@ exports.api = exports.getTravelData = async (req, res) => { const travelObj = travel.toObject(); const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processed = addBaseUrlToImages(travelObj, baseUrl); return res.json({ diff --git a/controllers/videoGalleryController.js b/controllers/videoGalleryController.js index 7487812..c18297a 100644 --- a/controllers/videoGalleryController.js +++ b/controllers/videoGalleryController.js @@ -23,7 +23,7 @@ exports.api = async (req, res) => { return res.status(404).json({ error: "Video Gallery data not found" }); } const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(videoGallery, baseUrl); res.json(processedData); } catch (err) { diff --git a/controllers/visaController.js b/controllers/visaController.js index d20aa1c..61d1899 100644 --- a/controllers/visaController.js +++ b/controllers/visaController.js @@ -678,7 +678,7 @@ exports.apiHero = async (req, res) => { ); const baseUrl = - process.env.BACKEND_URL || `${req.protocol}://${req.get("host")}`; + process.env.BACKEND_URL ?? `${req.protocol}://${req.get("host")}`; const processedData = addBaseUrlToImages(heroData, baseUrl); return res.json({