ส่วนที่ 2: NextJS + เส้นทาง API + MongoDB

เพิ่มฐานข้อมูล MongoDB ในแอป SaaS MVP ที่เราสร้างขึ้นในส่วนแรกของบล็อกชุดนี้

Codebase เริ่มต้นที่เราตั้งค่าสำหรับ SaaS MVP โดยใช้ NextJS, TypeScript, MaterialUI, Storybook, Jest และ SWR ได้อธิบายไว้ดังนี้:

ในโพสต์นี้ เราจะเชื่อมต่อแอพของเรากับฐานข้อมูล MongoDB

เราใช้เส้นทาง NextJS API (https://nextjs.org/docs/api-routes/introduction) เพื่อให้มีแบ็กเอนด์ HTTP API อยู่บนฐานรหัสเดียวกัน โดยใช้ TypeScript แน่นอน

ขั้นแรก สร้างฐานข้อมูล MongoDB

มีโซลูชัน MongoDB บนคลาวด์หลายตัว หนึ่งในนั้น (หากไม่ใช่วิธีที่ดีที่สุด) คือ MongoDB Atlas (https://www.mongodb.com/cloud/atlas). MongoDB Atlas มีระดับฟรี 500Mb DB มากมาย

สร้างฐานข้อมูล MongoDB บน ​​Atlas ขั้นตอนแรก สร้างโครงการ :

สร้างโครงการ

ขั้นตอนที่สอง สร้างคลัสเตอร์ฐานข้อมูลโดยเลือกแผน (ฟรี) และโฮสต์ (คลาวด์):

สร้างคลัสเตอร์ฐานข้อมูล

ขั้นตอนที่สาม สร้างผู้ใช้ฐานข้อมูลคลัสเตอร์:

หมายเหตุ: เขียนรหัสผ่านผู้ใช้ที่ใดที่หนึ่ง เราจะต้องใช้มันในขั้นตอนต่อไป

สร้างผู้ใช้ฐานข้อมูล

เมื่อสร้างผู้ใช้คลัสเตอร์ฐานข้อมูลแล้ว เราสามารถสร้างฐานข้อมูลโดยใช้ฟังก์ชันการเชื่อมต่อ

เชื่อมต่อกับคลัสเตอร์ฐานข้อมูล (การเข้าถึง IP)
เชื่อมต่อกับคลัสเตอร์ฐานข้อมูล (เข็มทิศ MongoDB)

เข็มทิศ MongoDB (https://www.mongodb.com/products/compass) เป็นไคลเอ็นต์ MongoDB บนเดสก์ท็อป ดาวน์โหลดและติดตั้งลงในกล่องภายในเครื่องของคุณ เราจะใช้มันเพื่อสร้างฐานข้อมูลของเราบนคลัสเตอร์และเพื่อสร้างคอลเลกชันและสืบค้นข้อมูลในพวกเขา

ชื่อฐานข้อมูลของเราจะเป็น: saas-dbและชุดแรกregistrations

เข็มทิศ MongoDB เชื่อมต่อกับคลัสเตอร์ฐานข้อมูล
MongoDB Compass สร้างฐานข้อมูลและคอลเล็กชัน

ใช้ MongoDB จากเส้นทาง NextJS API

เริ่มจาก repo ที่เราสร้างขึ้นในส่วนที่ 1 มาแก้ไขกัน เพื่อให้เราสามารถจัดเก็บและสอบถามผู้ใช้ที่ลงทะเบียนใน/จากฐานข้อมูล

ใน repo นั้น เราใช้ตัวแปรในหน่วยความจำเพื่อจัดเก็บการลงทะเบียนอีเมลที่มาจากเพจ เราจะแก้ไขปลายทางนั้นเพื่อใช้ MongoDB Collection registrationsแทน

ติดตั้งการพึ่งพา

mongodb เป็นที่พึ่งเดียวที่เราต้องการ

$ yarn add mongodb
yarn add v1.22.11
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...
success Saved lockfile.
success Saved 9 new dependencies.
info Direct dependencies
└─ [email protected]
info All dependencies
├─ @types/[email protected]
├─ @types/[email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
└─ [email protected]
✨  Done in 7.90s.

สำหรับการเชื่อมต่อกับ MongoDB เราใช้ "ฟังก์ชันการเชื่อมต่อ" ซ้ำจากโฟลเดอร์ตัวอย่าง NextJS repo (https://github.com/vercel/next.js/tree/canary/examples/with-mongodb) และปิดด้วยฟังก์ชันทั่วไปที่ให้การเข้าถึงฐานข้อมูลโดยตรง ดังนั้นเราจึงไม่จำเป็นต้องกังวลเกี่ยวกับการเชื่อมต่อกับฐานข้อมูลทุกครั้งที่เราจำเป็นต้องสืบค้น

withMongoฟังก์ชั่นเป็น async ทั่วไปที่จะอนุญาตให้กลับค่าพิมพ์<T> Tอดีต:

const registrations = await withMongo(async (db: Db) => {
  const collection = db.collection<User>('registrations')
  return await collection.find().toArray()
})

รายละเอียดที่สำคัญอีกประการหนึ่งคือการตั้งค่าตัวแปรรันไทม์ของสภาพแวดล้อม:

  • MONGO_DB_URL : ที่อยู่ URL การเชื่อมต่อ MongoDB (เหมือนกับที่เราเคยเชื่อมต่อกับคลัสเตอร์ฐานข้อมูล MongoDB โดยใช้เข็มทิศ)
  • MONGO_DB_NAME: MongoDB Name (เราตั้งให้เป็นsaas-db)

MONGO_DB_URL=mongodb+srv://<user>:<pass>@<server-url>
MONGO_DB_NAME=saas-db

เรียกใช้แอปของคุณ ตอนนี้มีแบ็กเอนด์ MongoDB

การเพิ่มอีเมลในการลงทะเบียน -> อีเมลในการรวบรวมการลงทะเบียน

บทสรุป

  • การตั้งค่าฐานข้อมูลสำหรับ SaaS MVP ไม่ควรเสียเวลาและเงินมากนัก ระดับฟรีมีอยู่เพื่อให้คุณสามารถบูตสแตรปแอปพลิเคชันของคุณได้ หากแอปพลิเคชันของคุณเติบโตขึ้น คุณสามารถซื้อพื้นที่เพิ่มเติมได้ตามต้องการโดยใช้แผนแบบไร้เซิร์ฟเวอร์ (https://www.mongodb.com/pricing)
  • MongoDB Atlas ฟรีระดับให้พื้นที่ฐานข้อมูล 500Mb แก่คุณ เพียงให้แน่ใจว่าได้ปกป้องการเข้าถึงด้วยรหัสผ่านที่รัดกุม และหากเป็นไปได้ ให้อนุญาตรายการ IP ให้ Peering (https://docs.atlas.mongodb.com/security-vpc-peering/) หรือปลายทางส่วนตัว (https://docs.atlas.mongodb.com/security-private-endpoint/)
  • ประเภท TypeScript ทำให้ทุกอย่างง่ายขึ้นมาก mongodbแพ็คเกจถูกพิมพ์อย่างสมบูรณ์ ใช้มัน.
  • รหัสเต็มสามารถพบได้ใน: https://github.com/outsrc/next-mui/tree/efg/with-mongodb
  • เรียกใช้การสาธิตที่: https://next-mui-r3ranh7al-outsrc.vercel.app/( เนื่องจากไม่มีปุ่มลบและอีเมลปรากฏบนหน้าเว็บ เราจึงลบข้อมูลทั้งหมดทุก ๆ ชั่วโมง )

Suggested posts

การค้นหาข้อมูลเกี่ยวกับชื่อโดเมน

ตัดตอนมาจาก Small, Sharp Software Tools โดย Brian P. Hogan

การค้นหาข้อมูลเกี่ยวกับชื่อโดเมน

เมื่อคุณส่งคำขอไปที่ facebook.com คอมพิวเตอร์ของคุณจะค้นหาชื่อโดเมนเพื่อแปลชื่อโดเมนนั้นเป็นที่อยู่ IP เพื่อให้คอมพิวเตอร์ของคุณสามารถเชื่อมต่อได้

การปฏิวัติแบบไม่ใช้โค้ด: ปลดปล่อยความรุ่งเรืองทางธุรกิจด้วย Webflow, Framer, Bubble.io,

การปฏิวัติแบบไม่ใช้โค้ด: ปลดปล่อยความรุ่งเรืองทางธุรกิจด้วย Webflow, Framer, Bubble.io,

เริ่มต้นการเดินทางอันน่าตื่นเต้นของนวัตกรรมและความสำเร็จในขณะที่คุณเข้าถึงศักยภาพที่ยังไม่ได้ใช้ของแพลตฟอร์มที่ไม่ต้องเขียนโค้ดที่น่าประหลาดใจเหล่านี้ ให้ฉันแบ่งปันเรื่องราวกับคุณเกี่ยวกับ Sapna นักธุรกิจหญิงที่โดดเด่น

Related posts

อะไรทำให้พอดคาสต์มีอิทธิพล?

อะไรทำให้พอดคาสต์มีอิทธิพล?

เมื่อสัปดาห์ที่แล้วฉันสังเกตเห็นข่าวประชาสัมพันธ์ที่เผยแพร่ผ่าน PressGazette (เว็บไซต์ข่าวของสื่ออังกฤษ) บทความประกาศว่า Acast ซึ่งเป็นบริษัทโฮสติ้งและโฆษณาพอดคาสต์ของ Scandi จะเป็นผู้นำกลุ่มผู้เผยแพร่ "อาจมีอิทธิพลมากที่สุด" ในพอดคาสต์

ติดตามใครก็ได้ด้วยหมายเลขโทรศัพท์ | การสอบสวน OSINT

ติดตามใครก็ได้ด้วยหมายเลขโทรศัพท์ | การสอบสวน OSINT

คุณสามารถเป็น OSINT Investigator, CTF Player หรือเพียงแค่ใครก็ตามที่ได้รับสายสแปม ผู้ที่พยายามยืนยันหมายเลขที่คุณเห็นในโฆษณา

การรวบรวม OSINT เพื่อการล่าภัยคุกคาม

การรวบรวม OSINT เพื่อการล่าภัยคุกคาม

สวัสดีชาวไซเบอร์! ยินดีต้อนรับกลับสู่ OSINT สำหรับซีรี่ส์การล่าภัยคุกคาม ในบทความแรก ฉันได้ให้ภาพรวมของ OSINT และความสำคัญในการตามล่าภัยคุกคาม

เงินทุนกำจัดคาร์บอนในปีงบประมาณ 24

รายละเอียดคำขอจัดสรรของ Carbon180 ข้ามเส้นทาง

เงินทุนกำจัดคาร์บอนในปีงบประมาณ 24

โดย Alyson Lee ที่ปรึกษาด้านการจัดการภาครัฐ กระบวนการจัดสรรประจำปีของรัฐบาลกลางเป็นหัวใจสำคัญของความพยายามของเราในการให้ทุนสนับสนุนการกำจัดก๊าซคาร์บอนไดออกไซด์ (CDR) ในแต่ละปี Carbon180 จะส่งคำขอไปยังสำนักงานรัฐสภาหลายแห่งเพื่อช่วยชี้แนะว่าเงินดอลลาร์ในปีหน้าจะไหลไปที่ใด