Next.js යෙදුමක් සකස් කරන විට MongoDB හා Mongoose එකතු කිරීමේදී බොහෝ සංවර්ධකයින්ට “බහු සම්බන්ධතා” හෝ “මොඩල් නැවත නිර්මාණය” වැනි ගැටළු අත්විඳීමට සිදුවේ. මේ ලිපියේදී, අනා ශෙයිඛ් විසින් තෝරාගත් සරළ, නමුත් ඉතා ප්රයෝජනවත් පේටර්න් හතරක් – සම්බන්ධතා කෑෂ්, සකස් කළ සකීම, TypeScript ටයිප් කළමනාකරණය, සහ .lean() භාවිතය – ඉදිරි Next.js ව්යාපෘති වලට අත්යවශ්ය බව පැහැදිලි කරයි.
1. සම්බන්ධතා කෑෂ් (Connection Caching) පේටර්න් – Next.js හි hot‑reload හෝ serverless ඇමතුම් අතර මොංගුස් සම්බන්ධතාවය නැවත සකස් නොකර, ගෝලීය cache එකක් භාවිතා කරයි. එවිට එක් සම්බන්ධතාවයක් පමණක් පවත්වා, “too many connections” දෝෂය වැළැක්විය හැක.
2. පසුබැසීමක් නොවන Schema නිර්මාණය – email සඳහා unique index, timestamps:true, සහ hot‑reload හි model overwrite වැළැක්වීම සඳහා models.User || model() භාවිතය අත්යවශ්ය. මෙයින් දත්ත සම්පූර්ණතාව සහ අඩු දෝෂයක් ලැබේ.
3. Document සහ Plain Object අතර වෙනස – Mongoose document එකක් සෘජුව client‑side වෙත යැවීම “Only plain objects can be passed to Client Components” දෝෂයට හේතු වේ. toUserDTO වැනි mapper function එකක් නිර්මාණය කර, අවශ්ය fields පමණක් client‑ට ලබා දිය හැක.
4. Query Helper ලෙස .lean() භාවිතය – .lean() මගින් plain JavaScript object ලැබෙයි, එමඟින් serialization වේගවත් වන අතර, තවත් එකක් මත පදනම් වූ DTO පරිවර්තනය පහසු වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ සංවර්ධකයින්ට මේ පේටර්න් අනුගමනය කිරීමෙන් ප්රයෝජන කිහිපයක් ලැබේ:
- ඉගෙනීමේ වේගය වැඩිවේ: සරල cache ක්රමයක් නිසා දෝෂ නිරාකරණය වේගයෙන් සිදු වේ, එමඟින් වැඩේ ඉක්මනින් ඉදිරියට යයි.
- ව්යාපාරික ගැටළු අඩු වේ: “too many connections” වැනි serverless පරිසරයේ සිදුවන ගැටළු වැළැක්වීමෙන් cloud වියදම අඩු වේ.
- කේත ගුණාත්මකභාවය ඉහළ යයි: TypeScript ටයිප් එකතු කිරීමෙන් compile‑time දෝෂ හඳුනාගත හැකිවීම, නවක සංවර්ධකයින්ට නිවැරදි coding practice ගත හැක.
ඉදිරි කාලයේ ශ්රී ලංකාවේ startups, fintech, e‑commerce වැනි ව්යාපාරයන් Next.js + MongoDB stack එක භාවිතා කරමින්, මේ පේටර්න් අනුගමනය කරන්නේ නම් තාක්ෂණික පදනම ශක්තිමත් කරගැනීමට සහ ඉදිරියට තරඟකාරී වීමට අවශ්ය පදනමක් සැපයෙනු ඇත.
ඔබේ පළපුරුද්දෙන් හෝ ව්යාපෘතියෙන් මේ ක්රමයන් යොදාගෙන ඇති නම්, අදහස් දෙන්න. තවත් සංවර්ධකයින්ටත් මේ පේටර්න් උදව් වනු ඇත.